#include <iostream> using namespace std; struct num{ int x ; int y ; }; int main() { struct num a[1001] ; int i , j , I; while( cin >> j ) { for( i = 0 ; i < j ; i++ ) { cin >> a[i].x; a[i].y = a[i].x % 10 ; } for( i = 0 ; i < j ; i++ ) { for( I = 0 ; I < j ; I++ ) { if( a[i].y < a[I].y ) { swap(a[i].x,a[I].x) ; swap(a[i].y,a[I].y) ; } } } for( I = 0 ; I < j ; I++ ) { for( i = 0 ; i < j ; i++ ) { if( a[i].y == a[i+1].y ) { if( a[i].x < a[i+1].x ) { swap(a[i].x,a[i+1].x) ; swap(a[i].y,a[i+1].y) ; } } } } for( i = 0 ; i < j ; i++ ) { cout << a[i].x << " "; } cout << endl; } return 0; }
最後測資過不了
for( I = 0 ; I < j ; I++ ) { for( i = 0 ; i < j ; i++ ) { if( a[i].y == a[i+1].y ) { if( a[i].x < a[i+1].x ) { swap(a[i].x,a[i+1].x) ; swap(a[i].y,a[i+1].y) ; } } } }
i+1改成I就可以了
其實我覺得不用分兩次排序,把if改一下就可以一次完成了
多餘的那個迴圈其實是要應付測資的
33 33 83 88 88 38
第1個會排不到
還是謝謝你喔~~~
: )