【题目大意】
有n个数(1<=n<=20),每个数ai的范围1<=ai<=n。给出k组排列,问有多少对数(x,y)在k组排列里均满足x排在y前面。
【样例输入】
3 4
4 1 2 3
4 1 3 2
4 2 1 3
【样例输出】
4
【解题思路】
由于n很小,可以枚举x与y,然后再k组排列里判断是否满足题意。
【代码】
#include <cstdio>
using namespace std;
int a[50][50];
int main()
{
int n,k;
scanf("%d%d",&k,&n);
for (int i=1;i<=k;i++)
{
for (int j=1;j<=n;j++)
{
int x;
scanf("%d",&x);
a[i][x]=j;
}
}
int ans=0;
for (int i=1;i<=n;i++)// i比j大
for (int j=1;j<=n;j++)
if (i!=j)
{
bool sym=true;
for (int t=1;t<=k;t++)
if (a[t][i]<=a[t][j])
{
sym=false;
break;
}
if (sym) ans++;
}
printf("%d\n",ans);
}
转载:https://blog.csdn.net/weixin_45723759/article/details/104416967
查看评论