小言_互联网的博客

20.2.19排位赛A

444人阅读  评论(0)

【题目大意】
有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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场