#12518: C++AC解


st990185@gmail.com (風神)

學校 : 臺北市立東湖國中
編號 : 67139
來源 : [220.136.196.36]
最後登入時間 :
2017-07-03 18:12:43
d550. 物件排序 | From: [124.11.192.89] | 發表日期 : 2017-08-06 11:30

#include <bits/stdc++.h>
using namespace std;

int N, M;
int arr[10005][205];

bool isBigger( int i , int j ){
    // 看看 arr[i] 是否比 arr[j] 大

    for ( int k = 0 ; k < M ; k++ )
        if ( arr[i][k] != arr[j][k]  )
            return arr[i][k] > arr[j][k];

    // 到這裡代表兩個完全一樣,回傳 true or false 都可

    return false;

}


void arraySwap( int i , int j ){

    // 交換 arr[i] 整排與 arr[j] 整排
    for ( int k = 0 ; k < M ; k++ )
        swap( arr[i][k], arr[j][k] );
        //逐一交換

}

int main(){

    cin >> N >> M;

    for ( int i = 0 ; i < N ; i++ )
        for ( int j = 0 ; j < M ; j++ )
            cin >> arr[i][j];

    for ( int i = 0 ; i < N ; i++ ){
        int mPtr = i;

        for ( int j = i+1 ; j < N ; j++ )
            if ( isBigger( mPtr, j ) ) 
               mPtr = j;

        arraySwap( i, mPtr );

    }

    for ( int i = 0 ; i < N ; i++ ){
        for ( int j = 0 ; j < M ; j++ )
            cout << arr[i][j] << " ";
        cout << endl;
    }


    return 0;
}
 
ZeroJudge Forum