程式碼填空:組合數字 計蒜客 - 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(沒理解)
- 計蒜客:最甜的蘋果(線段樹)蘋果
- 計蒜客:騎車比賽(Dijkstra)
- lg組合計數
- Python識別字母數字組合驗證碼Python
- JavaScript數字和字母組合驗證碼詳解JavaScript
- 計蒜客:農場看守(DFS、尤拉回路)
- 瞭解 JavaScript 函數語言程式設計 - 程式碼組合的優勢JavaScript函數程式設計
- Python純程式碼 取組合數結果Python
- 計蒜客 移除陣列中的重複元素陣列
- 2012年第三屆藍橋杯C/C++程式設計本科B組省賽 大數乘法(程式碼填空)C++程式設計
- 【數學】組合數學 - 排列組合
- 計算組合數 (sdut oj)
- 組合計數思維題
- 計蒜客模擬賽D2T1 蒜頭君的兔子:矩陣快速冪矩陣
- 一對一聊天原始碼,驗證碼生成隨機數字排列組合原始碼隨機
- 組合數學筆記-特殊計數數列筆記
- Redux實現組合計數器Redux
- 【POJ 2249】 Binomial Showdown 組合數學 排列組合計算
- 函數語言程式設計:Flutter&Dart中的組合函數程式設計FlutterDart
- 組合數學
- 計蒜客模擬賽D1T1 蒜頭君打地鼠:矩陣旋轉+二維字首和矩陣
- 組合數學筆記-排列與組合筆記
- 2012年第三屆藍橋杯C/C++程式設計本科B組省賽 放棋子(程式碼填空)C++程式設計
- js獲取數字中的最小數字程式碼程式碼例項JS
- C - Digital Path 計蒜客 - 42397(dp記憶化搜尋)Git
- JavaScript函數語言程式設計,真香之組合函式(二)JavaScript函數程式設計函式
- 理解函數語言程式設計語言中的組合--前言(一)函數程式設計
- lgB3717 計算組合數
- 組合數問題
- 組合數字首和
- 2015藍橋杯省賽javaA組-----牌型種數(填空)Java
- 文字框輸入數字倒計例項程式碼
- FPGA設計--數字的表示形式(程式碼+波形圖)FPGA
- TYVJ 1096 數字組合【0-1揹包模型】模型
- 遞迴示例-指定數字以內的所有排列組合(Reduce)遞迴
- 2012年第三屆藍橋杯C/C++程式設計本科B組省賽 方陣旋轉(程式碼填空)C++程式設計
- 20240820:組合計數(2)