首页 > 其他分享 >HJ89 24点运算

HJ89 24点运算

时间:2024-09-03 22:14:50浏览次数:14  
标签:24 运算 nowsum top Dfs num HJ89 id

题面:https://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d?tpId=37&tqId=21312&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=

给四张牌,判断能不能算24点。

先把牌转换成对应数值,存在结构体内。存在大小王则直接ERROR。

因为牌的顺序可以变换。就四重循环枚举所有排列,对于每种排列Dfs判断能否得出24点。id数组用于存储每种排列对应的编号。

如果可以就弹出,并输出结构体中的结果。

若不存在答案,输出NONE。

注意运算顺序强制控制为从左到右。我一开始没看到这个条件,以为还有优先级,都不太会写…强制抹去优先级后就容易多了。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 char fuhao[5];
 4 int id[10];
 5 bool book[10];
 6 struct Pai{
 7     int num;
 8     char s[10];
 9 }pai[5];
10 void init(){
11     for(int i=1;i<=4;i++)
12         scanf("%s",pai[i].s);
13     for(int i=1;i<=4;i++){
14         int len=strlen(pai[i].s);
15         char c=pai[i].s[0];
16         if(len==1){
17             if(c>='2'&&c<='9')pai[i].num=c-'2'+2;
18             else if(c=='J') pai[i].num=11;
19             else if(c=='Q') pai[i].num=12;
20             else if(c=='K') pai[i].num=13;
21             else if(c=='A') pai[i].num=1;
22         }
23         if(len==2) pai[i].num=10;
24         if(len==5){
25             puts("ERROR");
26             exit(0);
27         }
28     }
29     return;
30 }
31 void Output(){
32     printf("%s",pai[id[1]].s);
33     for(int i=2;i<=4;i++){
34         printf("%c",fuhao[i]);
35         printf("%s",pai[id[i]].s);
36     }
37     exit(0);
38     return;
39 }
40 void Dfs(int top,int nowsum){
41     if(top>4){
42         if(nowsum==24){
43             Output();
44             return;
45         }
46         return;
47     }
48     fuhao[top]='+';
49     Dfs(top+1,nowsum+pai[id[top]].num);
50     fuhao[top]='-';
51     Dfs(top+1,nowsum-pai[id[top]].num);
52     fuhao[top]='*';
53     Dfs(top+1,nowsum*pai[id[top]].num);
54     fuhao[top]='/';
55     Dfs(top+1,nowsum/pai[id[top]].num);
56     return;
57 }
58 int main(){
59     init();
60     for(int i=1;i<=4;i++)book[i]=1;
61     for(int i=1;i<=4;i++){
62         book[i]=0;
63         for(int j=1;j<=4;j++){
64             if(book[j]){
65                 book[j]=0;
66                 for(int m=1;m<=4;m++){
67                     if(book[m]){
68                         book[m]=0;
69                         for(int n=1;n<=4;n++){
70                             if(book[n]){
71                                 id[1]=i;
72                                 id[2]=j;
73                                 id[3]=m;
74                                 id[4]=n;
75                                 Dfs(2,pai[id[1]].num);
76                             }
77                         }
78                         book[m]=1;
79                     }
80                 }
81                 book[j]=1;
82             }
83         }
84         book[i]=1;
85     }
86     puts("NONE");
87     return 0;
88 }

 

标签:24,运算,nowsum,top,Dfs,num,HJ89,id
From: https://www.cnblogs.com/AlenaNuna/p/18395564

相关文章

  • 工作感受月记(202409月)
    2024年09月03日今日工作事项:1/一个apim的案例,在stv1migratestv2时,是在集成vnet中,同一个subnet下保留IP地址(preserveIP),目前这个功能不可用,并且没有ETA,pg估计可以在本月末实现它。2/然后是手中batchaccount的节点无法启动的问题,目前找到pg帮助查。3/containerapp的repli......
  • CSP2024-14
    A题意:给定一张边权为正的无向图,\(k\)条关建边,求从\(1\)经过所有关建边回到\(1\)的最短路。\(k\le12\)。所有关键边的端点加上\(1\)也就\(25\)个,\(f(x,S)\)表示当前在\(x\),已经经过的关键边集合为\(S\)的最短路,随便转移。傻逼人干傻逼事,最短路不开longlong调......
  • The 2023 ICPC Asia Nanjing Regional Contest (The 2nd Universal Cup. Stage 11: Na
    C-PrimitiveRoot题意给定p与m(p为质数),已知(g^(P-1))%P==1且g<=m。求g的个数。思路由(g^(P-1))%P==1与异或性质a-b<=a^b<=a+b,可以推出g=((k*p+1)^(p-1))与p*(k-1)+2<=g<=p*(k+1)。又因为g<=m,则当p*(k+1)<=......
  • 2024.9.3 作业
    自己实现栈和队列代码:/*******************************************/文件名:sq.h/*******************************************/#ifndefSQ_H#defineSQ_H#include<iostream>#include<cstring>usingnamespacestd;classMystack{private:char*data;......
  • 【专题】2024年中国游戏出海洞察报告合集PDF分享(附原数据表)
     原文链接:https://tecdat.cn/?p=375702023年全球游戏市场规模高达6205.2亿美元,且预计未来持续增长,这清晰地展示了该市场的巨大潜力和良好前景。中国游戏在全球移动游戏市场的份额于2023年已达37%,产业贡献超30%的市场收入,这反映出中国游戏在全球市场中的地位日益重要,竞......
  • CF 2100-2400 data structures 乱做
    CF2002ECosmicRays\(\star\)顺着询问想增加二元组\((a,b)\)的影响。只需要考虑它的合并情况,即尾部什么时候会出现数字\(b\),而总时间可以看作是最后一个尾部的存在时间,所以我们只需要关心尾部用栈维护尾部的数值和存在时间(不难发现这是一个单调栈)vector<pair<LL,int>>s;......
  • 又瞎忙了两个月-20240903
    【今天又是什么日子】今天是2024年9月3日,不是什么特殊的日子,或者,也可以说,学生们都开学了,要忙起来了【上次来是什么时候】上次还是6月24日,很久了,久到自己都不太好意思再来了;【为啥突然记得来了】还是要把找工作的事情搞起来;暑假是欧洲杯,奥运会;一直在拖延,一直在害怕,一直......
  • 20240903_190143 从清华到MIT知识点
    分词库的安装下载只需要一次即可pipinstalljieba分词的使用精准模式默认二级使用精准模式importjiebali=jieba.lcut(句子)全模式importjiebali=jieba.lcut(句子,cut_all=True)词频统计li=["a","b","a"]d={}forwinli: #查看这个w在字典中有几......
  • 20240903mystring进阶
    #include<iostream>#include<cstring>#include<stdexcept>//Forstd::out_of_rangeclassMystring{public://默认构造函数Mystring():str(nullptr),len(0){}//有参构造函数Mystring(constchar*s){len=strlen(......
  • zdppy+vue3+onlyoffice文档管理系统实战 20240902 上课笔记 登录功能优化
    遗留问题1、登录以后跳转最近文档2、如果用户没有登录应该自动跳转登录页面3、如果用户的token校验失败,应该自动调整登录界面4、按回车键自动跳转登录页面登录以后跳转最近文档constrouter=useRouter()router.push("/")实际代码:constloginData=awaitapi.login......