poj3983 算24点
来源:互联网 发布:预测算法java代码实现 编辑:程序博客网 时间:2024/06/05 03:04
#include<iostream>#include<fstream>using namespace std;char cf[4]={'+','-','*','/'};double f(double a,double b,int i){ if(i==0) return a+b; else if(i==1) return a-b; else if(i==2) return a*b; else{ if(b==0) return 111111111111.1111; return a*1.0/b; }}int main(){ //ifstream cin("1.txt"); double a[4]; cin>>a[0]>>a[1]>>a[2]>>a[3]; string s[4]; s[0]=char('0'+(int)a[0]); s[1]=char('0'+(int)a[1]); s[2]=char('0'+(int)a[2]); s[3]=char('0'+(int)a[3]); bool fit=false; //前两个先 for(int i=0;i<4;++i){ double val=f(a[0],a[1],i); string str="("+s[0]+cf[i]+s[1]+")"; //先val,a[2] for(int j=0;j<4;++j){ double val2=f(val,a[2],j); string str2="("+str+cf[j]+s[2]+")"; for(int k=0;k<4;++k){ double val3=f(val2,a[3],k); if(val3==24){ string str3=str2+cf[k]+s[3]; cout<<str3<<endl; return 0; } } } //先a[2],a[3] for(int j=0;j<4;++j){ double val2=f(a[2],a[3],j); string str2="("+s[2]+cf[j]+s[3]+")"; for(int k=0;k<4;++k){ double val3=f(val,val2,k); if(val3==24){ string str3=str+cf[k]+str2; cout<<str3<<endl; return 0; } } } } //当中两个 for(int i=0;i<4;++i){ double val=f(a[1],a[2],i); string str="("+s[1]+cf[i]+s[2]+")"; //先a[0],val for(int j=0;j<4;++j){ double val2=f(a[0],val,j); string str2="("+s[0]+cf[j]+str+")"; for(int k=0;k<4;++k){ double val3=f(val2,a[3],k); if(val3==24){ string str3=str2+cf[k]+s[3]; cout<<str3<<endl; return 0; } } } //先val,a[3] for(int j=0;j<4;++j){ double val2=f(val,a[3],j); string str2="("+str+cf[j]+s[3]+")"; for(int k=0;k<4;++k){ double val3=f(a[0],val2,k); if(val3==24){ string str3=s[0]+cf[k]+str2; cout<<str3<<endl; return 0; } } } } //最后两个 for(int i=0;i<4;++i){ double val=f(a[2],a[3],i); string str="("+s[2]+cf[i]+s[3]+")"; //先a[0],a[1] for(int j=0;j<4;++j){ double val2=f(a[0],a[1],j); string str2="("+s[0]+cf[j]+s[1]+")"; for(int k=0;k<4;++k){ double val3=f(val,val2,k); if(val3==24){ string str3=str+cf[k]+str2; cout<<str3<<endl; return 0; } } } //先a[1],val for(int j=0;j<4;++j){ double val2=f(a[1],val,j); string str2="("+s[1]+cf[j]+str+")"; for(int k=0;k<4;++k){ double val3=f(a[0],val2,k); if(val3==24){ string str3=s[0]+cf[k]+str2; cout<<str3<<endl; return 0; } } } } return 0;}别人的代码如下:
#include <stdio.h>#include <string.h>#include <stdlib.h>//四种符号char operators[4] = {'+', '-', '*', '/'};//符号运算double calc( double a, int operatorr, double b){switch (operators[operatorr]){case '+':return a + b;break;case '-':return a - b;break;case '*':return a * b;break;case '/':return a / b;break;}}int calculator(int i, int j, int k, double a, double b, double c, double d){ if (calc(calc(a, i, b),j,calc(c, k, d)) - 24.0 == 0) { printf("(%.0lf%c%.0lf)%c(%.0lf%c%.0lf)\n",a, operators[i], b, operators[j], c, operators[k], d); return 1; } if (calc(calc(calc(a, i, b), j, c), k, d) - 24.0 == 0) { printf("((%.0lf%c%.0lf)%c%.0lf)%c%.0lf)\n",a, operators[i], b, operators[j], c, operators[k], d); return 1; } if (calc(calc(a, i, calc(b, j, c)), k, d) - 24.0 == 0) { printf("(%.0lf%c(%.0lf%c%.0lf))%c%.0lf)\n",a, operators[i], b, operators[j], c, operators[k], d); return 1; } if (calc(a, i, calc(calc(b, j, c), k, d)) - 24.0 == 0) { printf("%.0lf%c((%.0lf%c%.0lf)%c%.0lf)\n",a, operators[i], b, operators[j], c, operators[k], d); return 1; } if (calc(a, i, calc(b, j, calc(c, k, d))) == 24.0) { printf("%.0lf%c(%.0lf%c(%.0lf%c%.0lf))\n",a, operators[i], b, operators[j], c, operators[k], d); return 1; } return 0;}int main(){double a,b,c,d;while (scanf("%lf %lf %lf %lf", &a, &b, &c, &d) != EOF){for (int i = 0; i < 4; ++ i){for(int j = 0; j < 4; ++ j){for(int k = 0; k < 4; ++ k){if(calculator(i,j,k,a,b,c,d))//题目中说有唯一解,找到后直接跳出goto success;}}}success:continue;}return 0;}
0 0
- poj3983 算24点
- poj3983 快算24
- acm-快算24(poj3983)暴力
- poj3983
- 【POJ3983】又一次被暑假第一天的题爽虐了
- VB算24点
- VB算24点
- 算24点程序
- 算24点
- 递归算24点
- Python算24点
- 【a501】算24点
- 算24点
- 算24点 C++
- 算24点小游戏
- 算24点
- 算24点
- java算24点
- 关于MTK平台第三方APK的定制方法
- ios XML解析
- WPF判断scrollbar是否滚动了最下面
- win7配置MySQL的ODBC数据源出错解决办法
- linux常用命令
- poj3983 算24点
- HTTP就绪状态和HTTP状态码
- 搜索(A - Lake Counting)
- 关于DirectX高级动画书中使用的9.0bsdk的升级说明 cXParser类(dx9.0c sdk vs2003编译运行通过)
- Linux date命令详解
- mexFunction-解读数组结构
- Uboot的第二阶段
- FAFU-1043 最大和谐子方阵 DP
- 在校(应届)大学生JAVAEE职业规划图