【题目大意】
有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("%dn",ans); }
1234567891011121314151617181920212223242526272829303132