思路:
第i行的最大值就是数组中的第i个。
知道这个规律就可以暴力找了。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int n;
int nums[60][60];
int line[60];
int main()
{
cin>>n;
for ( int i=1; i<=n;i++ )
for ( int j=1; j<=n; j++)
scanf("%d",&nums[i][j]);
memset( line,-1,sizeof line );
for ( int i=1; i<n; i++ ) {
int index = 0 ;
for ( int row=1; row<=n; row++ ) {
int j;
for ( j=1; j<=n; j++ ) {
if ( nums[row][j]>i ) break;
}
if ( j>n ) {
index = row;
break;
}
}
nums[index][index] = 99 ;
line[index] = i ;
}
for ( int i=1; i<=n; i++ )
if ( line[i]==-1 ) {
line[i] = n;
break;
}
for (int i=1; i<=n; i++ )
if ( i==1 ) cout<<line[i];
else cout<<" "<<line[i];
return 0 ;
}