题
题意
有个1到n的一个全排列,告诉你第i个数和全部n个数相比的较小数是多少,和自己相比时为0,于是有个主对角线为0的矩阵,求原数列
分析
我的想法是,给我们的每一行之和按大小排一下,就知道第i个数是数列里第几大的了。因为是n的全排列,所以第几大就是几。
按sum排完序后,r[sum[i].id]=i;这句表示原来在id位置的数是现在第i大的,所以r就是要求的全排列了。
代码
代码语言:javascript复制#include <stdio.h>
#include <algorithm>
#define N 60
using namespace std;
long long n,ans,a,r[N];
struct x
{
int v,id;
} sum[N];
int cmp(x a,x b)
{
return a.v<b.v;
}
int main()
{
scanf("%lld",&n);
for(int i=1; i<=n; i )
{
for(int j=1; j<=n; j )
{
scanf("%lld",&a);
sum[i].v =a;
}
sum[i].id=i;
}
sort(sum 1,sum 1 n,cmp);
for(int i=1; i<=n; i )
r[sum[i].id]=i;
for(int i=1; i<=n; i )
printf("%lld ",r[i]);
return 0;
}