#include<bits/stdc++.h>
#define ll long long
using namespace std;
int a[6];
int b[6]= {0,0,0,8,8,8};
int c[6]= {1,1,4,5,6,7};
int temp[6];
int maxx;
int check()
{
int cnt=0;
for(int i=0; i<6; i++)
for(int j=0; j<6; j++)
for(int k=0; k<6; k++)
{
if(a[i]!=b[j]&&a[i]!=c[k]&&b[j]!=c[k]&&a[i]>b[j]&&a[i]>c[k])
cnt++;
}
return cnt;
}
void dfs(int d)
{
if(d==3&&(a[0]+a[1]+a[2]==24)) return;
if(d==4&&(a[0]+a[1]+a[2]+a[3]>=24)) return;
if(d==5&&(a[0]+a[1]+a[2]+a[3]+a[4]>=24)) return;
if(d==6)
{
if(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]==24)
{
int num=check();
if(num>maxx)
{
maxx=num;
for(int i=0; i<6; i++)
{
temp[i]=a[i];
}
}
}
return;
}
for(int num=0; num<=8; num++)
{
a[d]=num;
dfs(d+1);
}
}
int main()
{
dfs(0);
sort(temp,temp+6);
for(int i=0; i<6; i++)
cout<<temp[i]<<" ";
return 0;
}
第四届蓝桥杯(国赛)——骰子谜题
最新推荐文章于 2023-02-14 16:21:47 发布
此博客介绍了一种利用深度优先搜索(DFS)算法寻找24点游戏最优解的方法。代码中定义了数组a、b、c和辅助数组,通过检查不同数字组合来计算可能的最大得分。在递归过程中,当数字总和达到24时,记录当前得分并更新最大得分。最后输出最高得分对应的数字组合。
摘要由CSDN通过智能技术生成