本文实例分享了用C语言实现24点游戏的具体代码,供大家参考。具体内容如下
将算法实现改为C语言并在服务器上运行。还要修改它以显示所有结果。
注意:如果传递的参数重复,如4、4、7、7,重复的结果会回显,暂时无法清除。
#
#
#
#
= 1E-6;
#4
整数=24;
#50
[]={0}; //此处必须使用,
字符[][]={0}; //保存表达式
# 正确 1
#0
整数cnt = 0;
无效测试(int n)
整数 i = 0;
整数 j = 0;
int len = 0;
//递归结束
如果(1==n){
如果([0]==)
// 避免输出括号
对于 (i = 1; i < ([0]) - 1; i++)
("%c", [0][i]);
(“\n”);
cnt++;
别的
//递归过程
对于(i=0;i
对于(j=i+1;j
a、b;
char expa[] = {0};
char expb[] = {0};
a=[i];
b=[j];
// 删除[j]元素并用[n-1]填充
[j]=[n-1];
(expa,[i]);
(expb,[j]);
// 删除[j]元素并用[n-1]填充
([j],[n-1]);
// 添加
长度= ([i]);
([i], , "(%s+%s)", expa, expb);
[i]=a+b;
测试(n-1);
//减号有两种情况,ab和ba
长度= ([i]);
([i], , "(%s-%s)", expa, expb);
[i] = ab;
测试(n-1);
如果(a!= b)
长度= ([i]);
([i], , "(%s-%s)", expb, expa);
[i]=ba;
测试(n-1);
//乘法
长度= ([i]);
([i], , "(%s*%s)", expa, expb);
[i]=a*b;
测试(n-1);
//除法也有两种情况,a/b和b/a
如果(b!= 0){
长度= ([i]);
([i], , "(%s/%s)", expa, expb);
[i]=a/b;
测试(n-1);
if((a!=0) && (a!= b)){
长度=([i]);
([i], , "(%s/%s)", expb, expa);
[i]=b/a;
测试(n-1);
//恢复数组
[i]=a;
[j]=b;
([i],expa);
([j],expb);
int main(int argc, char **argv)
整数 i = 0;
if(5 != argc)
(“参数错误\n”);
0;
对于(i=0;i
字符[20];
[i] = atoi(argv[i + 1]);
([i], argv[i + 1]);
测试();
if(0!=cnt)
(“[%d],\n”,cnt);
别的
(“失败\n”);
0;
运行结果如下:
安迪@:~/工作$ ./测试 5 6 7 8
((5+7)-8)*6
(5+7)*(8-6)
8/((7-5)/6)
(6/(7-5))*8
6/((7-5)/8)
(8/(7-5))*6
(6*8)/(7-5)
((5-8)+7)*6
(7-(8-5))*6
(5+7)*(8-6)
(6*8)/(7-5)
(5+(7-8))*6
(5-(8-7))*6
[13],
安迪@:~/工作$ ./测试 7 7 7 7
失败
以上就是本文的全部内容。希望对大家的学习有所帮助。也希望大家支持 Home。