纸牌游戏24点,输入4个1到13之间的值,通过加减乘除判断是否可以得到24。
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
bool game24(char ch[],char flat,int data[],int num,int sum)
{
if(num > 1)
ch[num-2] = flat;
if(num == 4)
{
if(sum == 24)
return true;
else
return false;
}
if(num == 0)
{
return game24(ch,'0',data,num+1,data[num]);
}
if(sum%data[num] == 0)
{
if(sum != 0)
return game24(ch,'+',data,num+1,sum+data[num])||game24(ch,'-',data,num+1,sum-data[num])||game24(ch,'*',data,num+1,sum*data[num])||game24(ch,'/',data,num+1,sum/data[num])||game24(ch,'\\',data,num+1,data[num]/sum);
else
return game24(ch,'+',data,num+1,sum+data[num])||game24(ch,'-',data,num+1,sum-data[num])||game24(ch,'*',data,num+1,sum*data[num])||game24(ch,'/',data,num+1,sum/data[num]);
}else
{
if(sum != 0)
return game24(ch,'+',data,num+1,sum+data[num])||game24(ch,'-',data,num+1,sum-data[num])||game24(ch,'*',data,num+1,sum*data[num])||game24(ch,'\\',data,num+1,data[num]/sum);
else
return game24(ch,'+',data,num+1,sum+data[num])||game24(ch,'-',data,num+1,sum-data[num])||game24(ch,'*',data,num+1,sum*data[num]);
}
}
bool sort(int data[],char ch[],int a,int b,int c,int d)
{
int num = 0,sum = 0;
int i = 0;
int j = 0;
int n = 0;
int m = 0;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(i == j)
continue;
for(n=0;n<4;n++)
{
if(n == j || n == i)
continue;
for(m=0;m<4;m++)
{
if(m == n || m == j || m == i)
continue;
data[i] = a;
data[j] = b;
data[n] = c;
data[m] = d;
if(game24(ch,'0',data,num,sum))
return true;
}
}
}
}
return false;
}
int main()
{
int a = 1;
int b = 2;
int c = 8;
int d = 9;
int data[4] = {0};
char ch[3] = {0};
if(sort(data,ch,a,b,c,d))
{
printf("%d%c%d%c%d%c%d\n",data[0],ch[0],data[1],ch[1],data[2],ch[2],data[3]);
}
else
printf("false\n");
}
>>
C语言解决八皇后问题
C语言实现汉诺塔
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)