程式碼填空:組合數字 計蒜客 - A1145
題目複述
右側程式碼是將 6個整數按照任意順序組合到一起,計算能組合出的最大數字。
例如:4123,25,66 組合到一起就是 66412325。
請閱讀程式補全程式碼,實現這個功能。
#include <stdio.h>
long long max(long long x, long long y) {
return x > y ? x : y;
}
long long test(int a[], int n) {
long long ret = 0;
for (int i = 0; i < n; ++i) {
int tp = a[i];
int j = 1;
while(tp) {
j *= 10;
tp /= 10;
}
ret = ret * j + a[i];
}
return ret;
}
long long f(int a[], int k) {
if (k == 6) {
return test(a, k);
}
long long ret = 0;
for(int i = k; i < 6; ++i) {
int t = a[k];
a[k] = a[i];
a[i] = t;
ret = max(ret, /*在這裡填寫必要的程式碼*/);
t = a[k];
a[k] = a[i];
a[i] = t;
}
return ret;
}
int main() {
int a[6] = {517, 283, 429, 65, 6566, 32};
printf("%lld\n", f(a, 0));
return 0;
}
個人思路
仔細看一看,不就是個dfs嗎?
詳細看註釋
#include <stdio.h>
long long max(long long x, long long y) //返回最大值
{
return x > y ? x : y;
}
long long test(int a[], int n) //將f()函式中按順序排好的六位數 換算成long long 型
{
long long ret = 0;
for (int i = 0; i < n; ++i)
{
int tp = a[i];
int j = 1;
while(tp) //計算a[i]是幾位數
{
j *= 10;
tp /= 10;
}
ret = ret * j + a[i];//把a[i]放到ret後面
}
return ret;
}
long long f(int a[], int k)
{
if (k == 6)
return test(a, k);
long long ret = 0;
for(int i = k; i < 6; ++i)
{
int t = a[k];//把a[k]和a[i]換位置
a[k] = a[i];
a[i] = t;
ret = max(ret,f(a,k+1));
t = a[k];//再把a[k]和a[i]換位置
a[k] = a[i];
a[i] = t;
}
return ret;
}
int main()
{
int a[6] = {517, 283, 429, 65, 6566, 32};
printf("%lld\n", f(a, 0));
return 0;
}
後語
本人水平低,就會一點雞毛蒜皮的C語言,大神路過勿噴,有什麼錯誤的歡迎指正。
相關文章
- B - 結果填空:炮臺實驗 計蒜客 - A2222(沒理解)
- 計蒜客 - T1151 - 奇數單增序列
- 計蒜客:騎車比賽(Dijkstra)
- Python識別字母數字組合驗證碼Python
- I - Max answer 計蒜客 - 38228 單調棧
- 計蒜客:最甜的蘋果(線段樹)蘋果
- 計蒜客:農場看守(DFS、尤拉回路)
- 計蒜客 - T1342 - 雞兔同籠
- Python純程式碼 取組合數結果Python
- JavaScript數字和字母組合驗證碼詳解JavaScript
- 瞭解 JavaScript 函數語言程式設計 - 程式碼組合的優勢JavaScript函數程式設計
- lg組合計數
- 【計蒜客】2017藍橋杯模擬賽(四)
- 計蒜客 煩惱的高考志願題解
- 計蒜客 移除陣列中的重複元素陣列
- 20240820:組合計數(2)
- 一對一聊天原始碼,驗證碼生成隨機數字排列組合原始碼隨機
- 組合計數思維題
- 【藍橋杯】計蒜客2017模擬賽A習題整理
- C - Digital Path 計蒜客 - 42397(dp記憶化搜尋)Git
- 【POJ 2249】 Binomial Showdown 組合數學 排列組合計算
- 2015藍橋杯省賽javaA組-----牌型種數(填空)Java
- 【數學】組合數學 - 排列組合
- 組合數學筆記-特殊計數數列筆記
- lgB3717 計算組合數
- Redux實現組合計數器Redux
- 11 萬字的位元組碼程式設計系列合集放送程式設計
- 函數語言程式設計:Flutter&Dart中的組合函數程式設計FlutterDart
- JavaScript函數語言程式設計,真香之組合函式(二)JavaScript函數程式設計函式
- 理解函數語言程式設計語言中的組合--前言(一)函數程式設計
- TYVJ 1096 數字組合【0-1揹包模型】模型
- BZOJ 2425 [HAOI2010]計數:數位dp + 組合數
- 組合數學
- 理解函數語言程式設計中的函式組合--Monoids(二)函數程式設計函式Mono
- 組合數學筆記-排列與組合筆記
- PHP非字母數字の程式碼PHP
- 楊輝三角(組合數)+排列組合
- 組合數問題