听取WA声一片
  • 板块P1236 算24点
  • 楼主starwind24
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/10 18:56
  • 上次更新2024/5/10 20:49:03
查看原帖
听取WA声一片
1279373
starwind24楼主2024/5/10 18:56

代码错哪里了?求助qwq

#include<bits/stdc++.h>
using namespace std;
int a[5]={},vis[5]={},fh[5]={},a1[5]={},a2[5]={},f=0;
void check(){
  for(int i=0;i<4;i++)
    if(a[i]==24) {f=1;break;}
  if(f==1){
    for(int i=0;i<3;i++) {
      cout<<a1[i];
      if(fh[i]==1) cout<<"+"<<a2[i]<<"="<<a1[i]+a2[i]<<endl;
      if(fh[i]==2) cout<<"-"<<a2[i]<<"="<<a1[i]-a2[i]<<endl;
      if(fh[i]==3) cout<<"*"<<a2[i]<<"="<<a1[i]*a2[i]<<endl;
      if(fh[i]==4) cout<<"/"<<a2[i]<<"="<<a1[i]/a2[i]<<endl;
    }
    exit(0);
  }
}
void dfs(int t){
  if(t==1) {check();return;}
  if(t>1)
    for(int i=0;i<4;i++)
      if(a[i]==24) return;
  for(int i=0;i<4;i++)
    for(int j=0;j<4;j++)
      if(vis[j]==0&&a[i]>=a[j]&&i!=j){
        a1[4-t]=a[i];
        a2[4-t]=a[j];
    a[i]=a[i]+a[j];
        vis[j]=1;
        fh[4-t]=1;
        if(a[i]>0&&vis[i]==0) dfs(t-1);
        vis[j]=0;
        a[i]-=a[j];
        a1[4-t]=a[i];
        a2[4-t]=a[j];
        a[i]=a[i]-a[j];
        vis[j]=1;
        fh[4-t]=2;
        if(a[i]>0&&vis[i]==0) dfs(t-1);
        vis[j]=0;
        a[i]+=a[j];
        a1[4-t]=a[i];
        a2[4-t]=a[j];
        a[i]=a[i]*a[j];
        vis[j]=1;
        fh[4-t]=3;
        if(a[i]>0&&vis[i]==0) dfs(t);
        vis[j]=0;
        a[i]/=a[j];
        if(a[i]%a[j]==0){
          a1[4-t]=a[i];
          a2[4-t]=a[j];
          a[i]=a[i]/a[j];
          vis[j]=1;
          fh[4-t]=4;
          if(a[i]>0&&vis[i]==0) dfs(t-1);
          vis[j]=0;
          a[i]*=a[j];
        }
      }
}
int main(){
  int i,j,k;
  for(i=0;i<4;i++) cin>>a[i];
  dfs(4);
  if(f==0) cout<<"No answer!"<<endl;
  return 0;
}

蒟蒻第一次写这样的代码

2024/5/10 18:56
加载中...