比赛名次(蓝桥杯)

比赛名次

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

解题思路:

暴力,将所有情况都列举出来,然后根据条件进行判断。每个选手说的话只有一半是正确的。

程序代码:

#include <stdio.h>
#include <string.h>
int x[6]; 

int f10(){
	if(x[1]==2)
		return 1;
	return 0;
}
int f11(){
	if(x[0]==3)
		return 1;
	return 0;
}
int f20(){
	if(x[1]==2)
		return 1;
	return 0;
}
int f21(){
	if(x[4]==4)
		return 0;
	return 0; 
}
int f30(){
	if(x[2]==1)
		return 1;
	return 0;
}
int f31(){
	if(x[3]==2)
		return 1;
	return 0;
}
int f40(){
	if(x[2]==5)
		return 1;
	return 0;
}
int f41(){
	if(x[3]==3)
		return 1;
	return 0;
}
int f50(){
	if(x[4]==4)
		return 1;
	return 0;
}
int f51(){
	if(x[0]==1)
		return 1;
	return 0;
}

int main()
{
	int i,j,k,l,m;
	for(i=1;i<=5;i++){
		for(j=1;j<=5;j++){ if(j==i) continue;
			for(k=1;k<=5;k++){ if(k==j||k==i) continue;
				for(l=1;l<=5;l++){ if(l==k||l==j||l==i) continue;
					for(m=1;m<=5;m++){ if(m==l||m==k||m==j||m==i) continue;
						x[0]=i;x[1]=j;x[2]=k;x[3]=l;x[4]=m;
						if(f10()+f11()==1&&f20()+f21()==1&&f30()+f31()==1&&f40()+f41()==1&&f50()+f51()==1){
							printf("%d%d%d%d%d%d%d%d%d%d\n",f10(),f11(),f20(),f21(),f30(),f31(),f40(),f41(),f50(),f51());
							printf("A=%d B=%d C=%d D=%d E=%d\n",i,j,k,l,m);	
						}
					}
				}
			}	
		}
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值