首页 > 学院 > 开发设计 > 正文

回顾曾经写过的c语言小代码(一)

2019-11-10 18:08:09
字体:
来源:转载
供稿:网友

这是大一的时候写的一个小程序,问题描述为确认小偷,有四个人A、B、C、D,他们中有一个是小偷,然后这四人分别说

A说:B没有偷,是D偷的。

B说:我没有偷,是C偷的。

C说:A没有偷,是B偷的。

D说:我没有偷。

A、B、C、D四人要么说真话,要么说假话。

那么根据思路,A和B,A和C,A和D,B和C不能同时成立。在这里假设值为0是假话,值为1是真话。

/*A:B没有偷,是D偷的。B:我没有偷,是C偷的。C:A没有偷,是B偷的。D:我没有偷。*/#include <stdio.h>#include <stdlib.h>int main(){	int a,b,c,d;	for(a=0;a<2;a++)		for(b=0;b<2;b++)			for(c=0;c<2;c++)				for(d=0;d<2;d++)					if((a+b<=1)&&(b+c<=1)&&(a+c<=1)&&(a+d<=1)&&(a+b+c+d>=0))					{						if (a == 1)PRintf("D is thief/n");						if (b == 1)printf("C is thief/n");						if (c == 1)printf("B is thief/n");						if (d == 1)printf("D isn't thief/n");						printf("A:%d B:%d C:%d D:%d/n",a,b,c,d);											}	system("pause");	return 0;}

从结果可以得知答案不唯一,题目的条件并没有给完全,而且通过修改if条件里最后一句(a+b+c+d>=0),可以得知最多只有两人说真话。这个程序采用穷举的思想,把所有的情况都尝试一遍,就目前来说,我并没有想到更好的代码。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表