日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[HDU 1427]速度计算24点(DFS暴力搜索)

發布時間:2025/4/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [HDU 1427]速度计算24点(DFS暴力搜索) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
主題連接: 

http://acm.hdu.edu.cn/showproblem.php?pid=1427

思路:簡單的DFS。dfs(sum,next,p)表示當前已經算出的值是sum,括號里算出的值是next,當前使用的卡片下標為p,實際上是把括號外和括號內的兩部分值分成sum和next來處理了。

直覺告訴我們4個數僅僅須要一層括號參與運算就夠了,不會也不必用多重括號改變運算順序,因此上面的dfs思路是正確的。

那么對于下一張卡片,有兩種處理方式:

1、把next算入sum中。下一張卡片成了新的括號里的算式的值。

2、把下一張卡片的值算入next中,下一張卡片增加了括號里。

對于上述兩種處理方式,每種方式又分成加減乘除四種情況討論。而對于除法這樣的情況須要特殊處理,除數不能為0,并且題目中要求運算過程中不能出現小數。因此在做除法運算前須要檢查。

#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <string> #include <algorithm>using namespace std;int cardNum[10]; //cardNum[i]=第i張牌的數字大小 bool flag=false; //flag=true表明能算出24點int getNum(string s) //撲克牌編號s轉數字 {if(s[0]>='2'&&s[0]<='9') return s[0]-'0';if(s=="10") return 10;switch(s[0]){case 'A': return 1;case 'J': return 11;case 'Q': return 12;case 'K': return 13;} }void dfs(int sum,int next,int p) //表示當前已經算出的值是sum,括號里算出的值是next,當前使用的卡片下標為p {if(p==4) //正在用第4張牌{if(sum+next==24||sum-next==24||sum*next==24)flag=true;if(next!=0&&sum%next==0&&sum/next==24)flag=true;return;}//1、不加括號dfs(sum+next,cardNum[p+1],p+1);dfs(sum-next,cardNum[p+1],p+1);dfs(sum*next,cardNum[p+1],p+1);if(next!=0&&sum%next==0)dfs(sum/next,cardNum[p+1],p+1);//2、加括號。則須要改變運算順序dfs(sum,next+cardNum[p+1],p+1);dfs(sum,next-cardNum[p+1],p+1);dfs(sum,next*cardNum[p+1],p+1);if(cardNum[p+1]!=0&&next%cardNum[p+1]==0)dfs(sum,next/cardNum[p+1],p+1); }int main() {string in;while(cin>>in){flag=false;cardNum[1]=getNum(in);for(int i=2;i<=4;i++){cin>>in;cardNum[i]=getNum(in);}sort(cardNum+1,cardNum+5);do{dfs(cardNum[1],cardNum[2],2);}while(!flag&&next_permutation(cardNum+1,cardNum+5));if(flag)printf("Yes\n");elseprintf("No\n");}return 0; }







本文轉自mfrbuaa博客園博客,原文鏈接:http://www.cnblogs.com/mfrbuaa/p/5049620.html,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的[HDU 1427]速度计算24点(DFS暴力搜索)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。