题目链接:C - Train Ticket
题意:你现在有(a,b,c,d)四个数字,你想通过在(a,b)、(b,c)、(c,d)之间添加(+)或(-)(必须添加),是这四个数的运算结果为7,保证有解,求这个式子(如有多个,输出其中一个即可)。
题解:一道十分明显的暴搜题,只需要二进制枚举一下就可以了(当然,如果有神仙要一个一个判断也是可以的)。由于范围过小,我便直接DFS了,代码方便不少。
下面是代码:
#include <cstdio>
int a[10];
int ans[10];
bool get;
void dfs(int x,int sum){
if(x==4){
if(sum==7){
get=1;
}
return;
}
if(get){
return;
}
ans[x]=-1;
dfs(x+1,sum-a[x+1]);
if(get){
return;
}
ans[x]=1;
dfs(x+1,sum+a[x+1]);
if(get){
return;
}
ans[x]=0;
}
int main(){
for(int i=1;i<=4;i++){
scanf("%1d",&a[i]);
}
dfs(1,a[1]);
for(int i=1;i<4;i++){
printf("%d%c",a[i],(ans[i]==-1?'-':'+'));
}
printf("%d=%d
",a[4],7);
return 0;
}