C语言 穷举法

来源:百度知道 编辑:UC知道 时间:2024/05/21 12:09:04
原题:
例:甲、乙、丙、丁4个人中有1个人是长沙人,请根据4个人的谈话判断谁是长沙人。已知 4人中有1个人说假话。
甲:我不是长沙人。乙:丙是长沙人。丙:丁是长沙人。丁:丙说谎。
分析:可以采用穷举法,依次假设甲、乙、丙、丁是长沙人,再根据他们的谈话找到关系式。由于有1个人说谎,所以4个关系式相加值为-3时即可找到谁是长沙人。
FOR X=1 TO 4
P=(X<>1)+(X=3)+(X=4)+(X<>4)
IF P=-3 THEN PRINT X:END
NEXT X
END
原题就是这样,是Qbasic上的一题,我想用C语言用类似的方法做出来可怎么也得不到答案,高手请教
我说了这是QBASIC语言
想用C语言做出来

#include <iostream.h>

//p = (x <> 1) + (x = 3) + (x = 4) + (x <> 4)
//以上vb代码等价于以下c程序

int main(){

for (int x=1;x<=4;x++)
{

int p=0;
if (x!=1) p--; //排除是减
if (x==3) p--;
if (x==4) p--;
if (x!=4) p--;
cout <<p;
if (p==-3)
{
cout<<x; //正确输出
}

}
return 0;
}
Gameboy_cy 把变量搞错了,应该是x而不是i哦:

for(int x=1;x<=4;x++)
{
int p=0;
if (x!=1) p++;
if (x==3) p++;
if (x==4) p++;
if (x<>4) p++;
if (p==-3) printf("%d\n",i);
}

#include <iostream.h>

//p = (x <> 1) + (x = 3) + (x = 4) + (x <> 4)
//以上vb代码等价于以下c程序

int main(){

for (int x=1;x<=4;x++)
{

int p=0;
if (x!=1) p--; //排除是减
if (x==3) p--;
if (x==4) p--;
if (x!=4) p--;
cout <<p;