蒟蒻求救 (违规紫衫)
  • 板块灌水区
  • 楼主Liziya
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/1/5 10:28
  • 上次更新2025/1/5 16:26:20
查看原帖
蒟蒻求救 (违规紫衫)
1292574
Liziya楼主2025/1/5 10:28

题目链接: P1236

6060分的代码 一直调也没给结果 看了眼题解也没看懂 太深奥了 求强大、伟大、博大的大佬救一下 QAQ

#include<stdio.h>
#include<cmath>
int a[4];
struct L{
	int num1;
	int num2;
	int result;
	char op;	
};
int Suan(int a,int b,char f){return (f=='+')?a+b:(f=='-')?abs(a-b):(f=='*')?a*b:(f=='/'&&b!=0)?a/b:0;}
bool Qp(int *a,int n){
	int i=n-2,j=n-1;
	while(i>=0&&a[i]>=a[i+1])i--;
    if(i<0)return 0;
    while(a[j]<=a[i])j--;
    int temp=a[i];
    a[i]=a[j];
    a[j]=temp;
    int l=i+1,r=n-1;
    while(l<r){
        temp=a[l];
        a[l]=a[r];
        a[r]=temp;
        l++;
        r--;
    }
    return 1;
}
int main(){
	for(int i=0;i<4;i++)scanf("%d",&a[i]);	
	char f[4]={'+','-','*','/'};
	int l[4]={0,1,2,3};
	while(Qp(l,4)){
		for(int i=0;i<4;i++){
			for(int j=0;j<4;j++){
				for(int k=0;k<4;k++){
					int sum1=Suan(a[l[0]],a[l[1]],f[i]);
                    if(sum1!=0){
                        int sum2=Suan(sum1,a[l[2]],f[j]);
                        if(sum2!=0){
                            int sum3=Suan(sum2,a[l[3]],f[k]);
                            if(sum3==24){
                                printf("%d%c%d=%d\n%d%c%d=%d\n%d%c%d=24\n",a[l[0]],f[i],a[l[1]],sum1,sum1,f[j],a[l[2]],sum2,sum2,f[k],a[l[3]]);
                                return 0;
                            }
                        }
                    }
				}
			}
    }
	printf("No answer!\n");
	return 0;
}
2025/1/5 10:28
加载中...