华为oj 24点游戏
2016-05-22 18:15
253 查看
输入1-10的4个整数,用空格分开,若这四个整数经过加减乘除运算可以得到24,那么输出true,否则false
在网上找到的大神运用的递归算法,修改了一下
在网上找到的大神运用的递归算法,修改了一下
#include<stdio.h> #include<math.h> int Game24(int n,int a[]); int main(){ int i; int a[4]; int n = 4; for (i=0;i<n;i++) scanf("%d",&a[i]); if(Game24(n,a)) printf("true"); else printf("false"); return 0; } int Game24(int n,int a[]) { int i,j; double b,c; double const PRECISION = 1e-6; // 精度 if(n==1) { if(fabs(a[0]-24)<PRECISION) return 1; else return 0; } for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { b=a[i]; c=a[j]; a[j]=a[n-1]; a[i]=b+c; if(Game24(n-1,a)) return 1; a[i]=b-c; if(Game24(n-1,a)) return 1; a[i]=c-b; if(Game24(n-1,a)) return 1; a[i]=b*c; if(Game24(n-1,a)) return 1; if(c!=0) { a[i]=b/c; if(Game24(n-1,a)) return 1; } if(b!=0) { a[i]=c/b; if(Game24(n-1,a)) return 1; } a[i]=b; a[j]=c; } } return 0; }
相关文章推荐
- JS扩展方法
- 绕过下载器下载可在线试听的音乐
- jQuery中的get和post方法
- 利用nvm管理nodejs
- 经典SQL语句大全
- 二进制的位运算
- 内核笔记2-Linux内核进程控制
- listView 点击事件实现方法
- 判断单链表回文
- VB.net学习笔记(二十二)XML的DOM模型读写
- 并发入门
- 第十二周进度条
- [置顶] 组合数学各种小定理
- 页面未随软键盘上升及android隐藏软键盘总结
- c++上机实验6-项目3-矩阵求和
- newLISP运行scp命令并打印进度
- HDU 5699 货物运输 (二分 + 不等式判断 好题)
- Machine Learning - Andrew NG Class02 - 监督学习应用.梯度下降
- vim 格式化文本,调整缩进
- ATL一:CWindowImpl