24点游戏
来源:互联网 发布:java 常用算法函数 编辑:程序博客网 时间:2024/06/07 09:09
算法分析
1. 利用随机函数rand()生成1-13的四位随机整数。
2. 定义calc_sign()函数,用来进行运算符的表示。
3. 遍历所有运算结果。
#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <time.h>int calc_sign(int a1, int a2, int b){ switch (b) { default: case 0: return (a1+a2); case 1: return (a1-a2); case 2: return (a1*a2); case 3: if (a2!=0) return (a1/a2); else return 0; } } #define MAX 10 void calc_24point() { int num[4]; char sign[5]="+-*/"; int i,j,k,l; int n,m,r; int tem1,tem2,tem3; srand( (unsigned)time(0)); num[0] = 1+rand()%13; num[1] = 1+rand()%13; num[2] = 1+rand()%13; num[3] = 1+rand()%13; for(i=0;i<4;i++){ for(j=0;j<4;j++) { if(j==i) continue; for(k=0;k<4;k++) { if(k==i || k==j) continue; for(l=0;l<4;l++) { if(l==i || l==j || l==k) continue; for(n=0;n<4;n++) { for(m=0;m<4;m++) { for(r=0;r<4;r++) { tem1=calc_sign(num[i],num[j],n); tem2=calc_sign(tem1,num[k],m); tem3=calc_sign(tem2,num[l],r); if(tem3==24) printf("{(%d%c%d)%c%d}%c%d=24\n",num[i],sign[n],num[j],sign[m],num[k],sign[r],num[l]); else if(tem3==-24) printf("{%d%c(%d%c%d)}%c%d=24\n",num[k],sign[m],num[i],sign[n],num[j],sign[r],num[l]); else { tem1=calc_sign(num[i],num[j],n); tem2=calc_sign(num[k],num[l],r); tem3=calc_sign(tem1,tem2,m); if(tem3==24.0) printf("(%d%c%d)%c(%d%c%d)=24\n",num[i],sign[n],num[j],sign[m],num[k],sign[r],num[l]);} } } } } } } }} int main() { while(1){ calc_24point();printf("0键返回,任意键继续\n"); if(getchar() != '0') continue; else break; }return 0;}
4. 若输出结果为24则printf表达式。
5. 任意键返回步骤1,继续操作,遇0则退出。
6. 程序流程图:
0 0
- 24点游戏代码
- 24点游戏
- 24点扑克牌游戏
- 24点游戏
- 24点游戏
- 《24点游戏》
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏
- 24点游戏源码
- 24点游戏
- 24点游戏-hero
- 24点游戏
- 24点游戏算法
- mv 命令批量移动文件夹
- 24点游戏
- 类的加载顺序及静态代码块的执行时机
- CJOJ 1160 热浪
- 显示HWC合成(hwc_display_contents_1_t,hwc_layer_1_t数据结构关系)
- 24点游戏
- 如何存储和获取数据
- Effective C++笔记09:绝不在构造函数和析构过程中调用virtual 函数
- 链表面试题——C语言
- Java中关于包的小结
- 架设wordpress
- CEF编译步骤
- HDU1102&&POJ2421 Constructing Roads
- Java接口