置换排列 |
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB |
Total submit users: 768, Accepted users: 715 |
Problem 10182 : No special judgement |
Problem description |
给定一个自然数n 和 1到n的一个排列,比如 4 及 排列 1 4 3 2,我们说1放在第1个位置,第1个位置放了1,4放在第2个位置,第4个位置放2,3放在第3个位置,第3个位置放了3;我们可以输出yes;但是对5 以及 排列 2 3 4 5 1 却不成立,我们输出no。 |
Input |
第一行t,表示测试数据的个数 接下来的t行每行是n 和 1到n的一个排列共n+1个自然数,n<=100。 |
Output |
对每个测试数据输出yes 或者 no。 |
Sample Input |
3 4 1 4 3 2 5 2 3 4 5 1 1 1 |
Sample Output |
yes no yes |
Problem Source |
CSU 1st Contest |
#include<stdio.h>
int main()
{
int i,j,k,num,a;
int m[100],n[100];
scanf("%d",&num);
for(i=0;i<num;i++)
{
scanf("%d",&a);
for(j=0;j<a;j++)
{
scanf("%d",&m[j]);
}
for(k=0;k<a;k++)
{
if(m[(m[k])-1]!=k+1)
{
n[i]=1;break;
}
n[i]=0;
}
}
for(j=0;j<num;j++)
{
if(n[j]==1)
printf("no\n");
if(n[j]==0)
printf("yes\n");
}
return 0;
}