Atcoder Beginner Contest 079 C - Train Ticket 题解
题目链接: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\n",a[4],7);
return 0;
}
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。