提交几次都没过,冒泡排序一直在改。
然后干脆用STL的sort,方便简洁,一换代码就过了!
冒泡排序竟然都写错了!不过涉及两个数组确实挺麻烦的。
改后的代码用了全局变量,不符合软件工程的思想。但是刷sicily就先不顾忌这些了。
贴代码(错误的排序代码在注释里,有空再看):
#include <iostream> #include <algorithm> using namespace std; string s; int cmp(int i,int j) //降序排序 { if(((s[i]==s[j])&&(i<j))||s[i]<s[j]) return 1; else return 0; } int main() { string t; int n, size, len; int r, c; int temp, ti; char a[100][10]; int o[10], p[10]; cin >> s; while( s != "THEEND" ) { cin >> t; size = t.size(); n = s.size(); len = size/n; for( c = 0; c < n; c++ ) { for( r = 0; r < len; r++ ) { a[r][c] = t[c*len+r]; } } for( r = 0; r < n; r++ ) { o[r] = r; p[r] = r; } sort(o, o+n, cmp); //for ( r = 0; r < n; r++ ){ // temp = s[r]; // ti = r; // for( c = r+1; c < n; c++ ) { // if( temp > s[c] ) { // temp = s[c]; // ti = c; // } // } // if( ti != o[r] ){ // s[ti] = s[r]; // s[r] = temp; // temp = o[ti]; // o[ti] = o[r]; // o[r] = temp; // } // /*for ( c = 0; c< n; c++ ) { // cout << s[c]; // } // cout << endl; // for ( c = 0;c < n; c++ ) { // cout << o[c]; // } // cout << endl;*/ //} /*for ( c = 0;c < n; c++ ) { cout << o[c]; } cout << endl;*/ for ( r = 0; r < n; r++ ) { p[o[r]] = r; } for( r = 0; r < len; r++ ) { for( c = 0; c < n; c++ ) { cout << a[r][p[c]]; } } cout << endl; cin >> s; } return 0; }