#7#8错了
查看原帖
#7#8错了
297572
刺客阿柒楼主2021/8/12 16:46
#include<bits/stdc++.h>
using namespace std;
int a[5][11];
int ans[11][3];
int ysf[11];
bool f;
char fh(int k){
	switch(k){
		case 1: return '+';break;
		case 2: return '-';break;
		case 3: return '*';break;
		case 4: return '/';break;
	}
}
int js(int x,int y,int k){
	switch(k){
		case 1: return x+y;break;
		case 2: return x-y;break;
		case 3: return x*y;break; 
		case 4: return x/y;break;
	}
}
void print(int ps){
    if(ps==1) return ;
    printf("%d%c%d=%d\n",ans[ps][1],fh(ysf[ps]),ans[ps][2],a[ps-1][1]);
    print(ps-1);
}
void dfs(int ps){
	if(f) return ;
    if(ps==1){
        if(a[1][1]==24){
            f=1;
            print(4);
        }
        return ;
    }
    for(int i=1;i<=ps;i++)
        for(int j=i+1;j<=ps;j++){
        	ans[ps][1]=max(a[ps][i],a[ps][j]);
			ans[ps][2]=min(a[ps][i],a[ps][j]);
                for(int k=1;k<=4;k++){
                    if((k==2&&a[ps][i]<=a[ps][j])||(k==4&&a[ps][j]!=0&&a[ps][i]%a[ps][j]!=0)) continue;
                    int tp=1;
                    a[ps-1][tp]=js(a[ps][i],a[ps][j],k);
                    for(int w=1;w<=ps;w++) if(w!=i&&w!=j) a[ps-1][++tp]=a[ps][w];
                    ysf[ps]=k;
                    dfs(ps-1);
            	}
		}        
}
int main(){
    for(int i=1;i<=4;i++) scanf("%d",&a[4][i]);
    dfs(4);
    if(!f) printf("No answer!\n");
    return 0;
}
2021/8/12 16:46
加载中...