數串題
阿新 • • 發佈:2018-12-07
發現自己的解題能力直線下降,是該好好訓練訓練了。
設有Ñ個正整數,將他們連線成一排,組成一個最大的多位整數。
如:N = 3時,3個整數13312343,連成的最大整數為34331213.
如:N = 4時,4個整數7,13,4,246連線成的最大整數為7424613。
思路是這樣子的,定義一個字串陣列,將各個整數存放進去,利用兩字串合併後的比較,即可求解
#include <stdio.h> #include <iostream> using namespace std; int main() { int n,i,j; string a[201],temp; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) cin>>a[i]; for(i=0;i<n-1;i++) { for(j=n-1;j>i;j--) { if(a[j-1]+a[j]<a[j]+a[j-1])//如果該條件成立 則交換 { temp = a[j]; a[j] = a[j-1]; a[j-1] = temp; } } } for(i=0;i<n;i++) cout<<a[i]; printf("\n"); } }