2014 網選 5012 Dice(bfs模板)

  1 /*
  2     題意:就是給定兩個篩子,每個篩子上6個面,每個面的數字屬于[1,6], 且互不相同!
  3     問a篩子最少經過按照題目規定的要求轉動,達到和b篩子上下左右前后的數字相同!
  4     
  5     思路:很直白的bfs,將每一種狀態對應一個數字,保證這種狀態不會重新加入隊列中! 
  6 */
  7 #include<iostream>
  8 #include<cstdio>
  9 #include<cstring>
 10 #include<algorithm>
 11 #include<queue>
 12 using namespace std;
 13 
 14 int a[7], ss;
 15 int vis[654330];
 16 
 17 struct node{
 18     int k[7];
 19     node(){}
 20     node(int a1, int a2, int a3, int a4, int a5, int a6){
 21         k[1]=a1;
 22         k[2]=a2;
 23         k[3]=a3;
 24         k[4]=a4;
 25         k[5]=a5;
 26         k[6]=a6;
 27     }
 28     int step;
 29 };
 30 
 31 queue<node>q; 
 32 
 33 
 34 int sum(node x){
 35     int s=0;
 36     for(int i=1; i<=6; ++i)
 37        s= s*10 + x.k[i];
 38     return s;
 39 }
 40 
 41 bool bfs(){
 42     while(!q.empty()) q.pop();
 43     node cur(a[1], a[2], a[3], a[4], a[5], a[6]);
 44     cur.step=0;
 45     q.push(cur);
 46     vis[sum(cur)]=1;
 47     while(!q.empty()){
 48         cur = q.front();
 49         if(sum(cur)==ss){
 50             printf("%d\n", cur.step);
 51             return true;
 52         }
 53         q.pop();
 54         node *nt = new node(cur.k[5], cur.k[6], cur.k[3], cur.k[4], cur.k[2], cur.k[1]);
 55         int v = sum(*nt);
 56         if(!vis[v]){
 57             vis[v]=1;
 58             nt->step = cur.step + 1; 
 59             q.push(*nt);
 60         }
 61         
 62         nt = new node(cur.k[6], cur.k[5], cur.k[3], cur.k[4], cur.k[1], cur.k[2]);
 63         v = sum(*nt);
 64         if(!vis[v]){
 65             vis[v]=1;
 66             nt->step = cur.step + 1; 
 67             q.push(*nt);
 68         }
 69         
 70         nt = new node(cur.k[3], cur.k[4], cur.k[2], cur.k[1], cur.k[5], cur.k[6]);
 71         v = sum(*nt);
 72         if(!vis[v]){
 73             vis[v]=1;
 74             nt->step = cur.step + 1; 
 75             q.push(*nt);
 76         }
 77         
 78         nt = new node(cur.k[4], cur.k[3], cur.k[1], cur.k[2], cur.k[5], cur.k[6]);
 79         v = sum(*nt);
 80         if(!vis[v]){
 81             vis[v]=1;
 82             nt->step = cur.step + 1; 
 83             q.push(*nt);
 84         }
 85     }
 86     return false;
 87 }
 88 
 89 int main(){
 90     while(scanf("%d%d%d%d%d%d", &a[1], &a[2], &a[3], &a[4], &a[5], &a[6])!=EOF){
 91         ss=0;
 92         for(int i=1; i<=6; ++i){
 93             int x;
 94             scanf("%d", &x);
 95             ss = ss * 10 + x;
 96         }
 97         memset(vis, 0, sizeof(vis));
 98         if(!bfs())
 99             printf("-1\n"); 
100     }
101     return 0;
102 }

?

轉載于:https://www.cnblogs.com/hujunzheng/p/3975625.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531660.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531660.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531660.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab 神經網絡dpi,基于DPI和BP神經網絡的P2P流量識別研究

研究與開發 現代計算機 2019.04 上 文章編號&#xff1a;1007-1423(2019)10-0031-05 DOI&#xff1a;10.3969/j.issn.1007-1423.2019.10.007 基于 DPI 和 BP 神經網絡的 P2P 流量識別研究 萬建偉&#xff0c;胡勇 (四川大學電子信息學院&#xff0c;成都 610021) 摘要&#xff…

2014 網選 5011 Game(Nim游戲,數學題)

/*題意&#xff1a;Nim游戲&#xff01; 思路&#xff1a;通過異或&#xff0c;判斷將n個數表示成二進制的形式之后&#xff0c;是否對應位的數字1 的個數是偶數&#xff01; */ #include<iostream> using namespace std;int main(){int n, x, s;while(cin>>n){s…

漢諾塔實踐python,Python練習題11:漢諾塔實踐

在終端輸出如下信息--python在終端輸出如下信息--python ???????????????????????????????????????????????????????????????????????????????????????????????? 描述 練習一…

oracle授權只讀用戶,Oracle創建只讀用戶(賬號)的方法

第一步&#xff1a;創建用戶(需要使用有dba管理員權限的用戶創建一個新的用戶&#xff0c;比如system)create user 用戶名 identified by 密碼 default tablespace 表空間;第二步&#xff1a;賦連接權限grant connect to 用戶名;grant Resource to 用戶名;權限分類&#xff1a;…

java中圖片文件的傳輸及顯示(Socket以及ServerSocket演示)

//客戶端部分 package testSix;import java.awt.Graphics; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.util.Iterator;import javax.imageio.ImageIO; import …

oracle 表約束非空,oracle--約束(主鍵、非空、檢查)

問題1:學號重復了&#xff0c;數據還可以插入成功使用主鍵約束&#xff1a;學號是唯一標識一條數據的&#xff0c;所以必須唯一且不能為空---(1)、在確定為主鍵的字段后添加 primary key關鍵字---(2)、在創建表的后面使用&#xff1a;constraints pk_表名_字段名 primary key(字…

先序,中序,后序線索二叉樹

//后序線索&#xff0c;這種方法不容易想到 1 #include<iostream>2 #include<cstring>3 #include<cstdio>4 #include<algorithm>5 6 using namespace std;7 8 struct TREE{9 int val; 10 TREE *ch[2]; 11 TREE *thread;//該節點的線索的…

cdp備份適合oracle嗎,備份系統建設中的四個認識誤區,你有嗎?

【摘要】本文總結了企業在備份建設中常見的四個認識誤區。【作者】李志剛企業在備份建設中&#xff0c;主要的認識誤區有以下幾個&#xff1a;一、用雙機、陣列復制等系統冗余替代數據備份雙機雙柜可實現服務器和存儲的高可用性&#xff0c;保障業務持續運行&#xff0c;但絕不…

2014 網選 廣州賽區 hdu 5023 A Corrupt Mayor's Performance Art

1 #include<iostream>2 #include<cstring>3 #include<cstdio>4 #include<algorithm>5 #define N 10000056 using namespace std;7 8 int c[35];9 int tree[N*4];//正值表示該節點所管理的區間的顏色是純色&#xff0c;-1表示的是非純色 10 int n, m; …

oracle的todate函數 不用英文,關于在mybaties 和 oracle的to_date函數的問題?

ITMISSD)TO_DATE使用詳解時常使用to_date函數來查詢特定時間內的數據。語法&#xff1a;TO_DATE(x [, format])用于將字符串x轉換為時間值&#xff0c;該函數可以指定一個可選的字符串format參數來說明x的格式。如果沒有指定format參數&#xff0c;日期就使用默認的數據庫格式(…

2014 網選 廣州賽區 hdu 5025 Saving Tang Monk(bfs+四維數組記錄狀態)

1 /*2 這是我做過的一道新類型的搜索題&#xff01;從來沒想過用四維數組記錄狀態&#xff01;3 以前做過的都是用二維的&#xff01;自己的四維還是太狹隘了.....4 5 題意&#xff1a;悟空救師傅 &#xff01; 在救師父之前要先把所有的鑰匙找到&#xff01;6…

oracle move 換用戶,Oracle?move方法釋放delete后的表空間

在新增記錄時,高水位線會慢慢往上移,但是在刪除記錄后,高水位線卻不會往下移。在使用delete from命令刪除大量數據時會導致因HWM引起的性能問題。刪除高水位的最直接的方法是truncate Table。-----Oracle 頻繁delete表空間無法釋放&#xff0c;釋放表空間方法&#xff0c;清除…

oracle 字段除以1000,ORACLE常用}1000(之一)_oracle

大家在oracle的r候可能齙膠芏囁雌聿渾y的}, 特eπ率碚f, 今天我偉閹Y一下, l布o大家, 希望Υ蠹矣助! 和大家一起探, 共同M步!     ORACLE高手碚f是不用看的. 1. Oracle安b完成后的初始口令?   internal/oracle   sys/change_on_install   system/manager   scott/…

java中圖片文件的判斷

javax.imageio 類 ImageIO BufferedImage bi ImageIO.read(resFile);//resFile --- InputStreamif(bi null){ System.out.println(此文件不為圖片文件); }try {//判斷是否為圖片文件并且返回圖片的格式&#xff01;ImageInputStream iis ImageIO.createImageInputStream(o)…

oracle 查看數據庫性能,oracle 11G使用statspack查看數據庫的性能

1.安裝Statspack工具(statspack工具的腳本在$ORACLE_HOME/rdbms/admin目錄下,全是以sp開頭的文件)[oracleoracle ~]$ sqlplus / as sysdbasql> select file_name,tablespace_name from dba_data_files;FILE_NAMETABLESPACE_NAME-------------------------------------------…

java中JTextPane使輸出字符到指定的寬度換行,并將垂直滾動條的位置移動到輸出的最后位置...

SimpleAttributeSet set new SimpleAttributeSet();Document doc tp.getStyledDocument(); FontMetrics fm tp.getFontMetrics(tp.getFont());//得到JTextPane 的當前字體尺寸int paneWidth tp.getWidth();//面板的寬度String text new String(bt, 0, len);  try{for(int…

oracle 10g rac 修改sga_target不生效,Oracle Rac 修改SGA_TARGET值無變化

Oracle Rac 修改SGA_TARGET值無變化發布時間&#xff1a;2020-08-13 23:02:13來源&#xff1a;ITPUB博客閱讀&#xff1a;93作者&#xff1a;dmcatding系統&#xff1a;Red Hat Enterprise Linux Server release 6.4 (Santiago)數據庫&#xff1a;Oracle 11.2.0.4.1710171、 al…

codeforces George and Job

1 /*2 題意&#xff1a;給一個長度為n的序列&#xff0c; 從中選擇長度為m的k個區間&#xff08;任意兩個區間不會有公共部分&#xff09;3 使得所選擇的區間的和最大&#xff01;4 思路&#xff1a;這是一種很常見的dp5 6 dp[i][j] 表示的是前 i 個數選擇…

oracle表空間 設置,Oracle表空間怎么設置和管理

前言表空間是 Oracle 特有的一種邏輯結構&#xff0c;是管理和組織 Oracle 數據文件一種方式&#xff0c;一個Oracle 數據庫能夠有一個或多個表空間&#xff0c;而一個表空間則對應一個或多個物理的數據庫文件。Oracle 的表空間分為永久空間和臨時表空間&#xff0c;同時又分為…

2014 網選 5024 Wang Xifeng's Little Plot

題意&#xff1a;從任意一個任意一個可走的點開始找一個最長的路&#xff0c;這條路如果有轉彎的話&#xff0c; 那么必須是 90度&#xff0c;或者沒有轉彎&#xff01; 思路&#xff1a; 首先用dfs將所有可走點開始的 8 個方向上的線段的最長長度求出來 &#xff01; step[i][…