空格最小,其次加号,其次减号
by __stick @ 2022-09-29 21:19:08
@[YuRuochen](/user/658786) 你还可以输出值看一下,比如这样:
```cpp
printf("%d %d %d",' ','+','-');
```
然后输出: 32 43 45
by __stick @ 2022-09-29 21:20:18
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,a[10];
char f(int k){
if(k==1) return ' ';
else if(k==2) return '+';
else return '-';//这样
}
bool check(){
int k=1,s=0,sum=0;
for(int i=1;i<=n;i++){
s=s*10+i;
if(a[i]==2){
sum+=s*k;
s=0;
k=1;
}else if(a[i]==3){
sum+=s*k;
s=0;
k=-1;
}
}
sum+=s*k;
return !sum;
}
void dfs(int now){
if(now==n){
if(check()){
for(int i=1;i<n;i++) printf("%d%c",i,f(a[i]));
printf("%d\n",n);
}
return;
}
for(int i=1;i<=3;i++){
a[now]=i;
dfs(now+1);
}
}
int main(){
scanf("%d",&n);
dfs(1);
return 0;
}
```
by AirQwQ @ 2022-09-29 21:26:19