题目描述:
参考代码:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #define M 300 6 using namespace std; 7 char a[M][M]; 8 void fun(int j,int k) 9 { 10 char temp[M]; 11 strcpy(temp,a[j]); 12 strcpy(a[j],a[k]); 13 strcpy(a[k],temp); 14 } 15 int main() 16 { 17 int i = 0; 18 while(cin >> a[i]) 19 i ++; 20 for(int j = 0; j < i; j ++) 21 { 22 for(int k = j + 1; k < i; k ++) 23 { 24 if(strlen(a[j]) > strlen(a[k])) //按字符串长度排序 25 fun(j,k); 26 else if(strlen(a[j]) == strlen(a[k])) 27 { 28 int sumj = 0,sumk = 0; 29 for(int t = 0; t < strlen(a[j]); t ++) //求1的个数 30 sumj = sumj + a[j][t] - ‘0‘; 31 for(int t = 0; t < strlen(a[k]); t ++) //求1的个数 32 sumk = sumk + a[k][t] - ‘0‘; 33 if(sumj > sumk) //按一的个数排序 34 fun(j,k); 35 else if(sumj == sumk) 36 if(strcmp(a[j],a[k]) > 0) //ASCII排序 37 fun(j,k); 38 } 39 } 40 } 41 for(int j = 0; j < i; j ++) 42 cout << a[j] << endl; 43 return 0; 44 }
时间: 2024-10-26 01:05:46