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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

USACO Section1.3 Combination Lock 解题报告

發布時間:2025/4/16 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 USACO Section1.3 Combination Lock 解题报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

    combo解題報告?—— icedream61 博客園(轉載請注明出處)
------------------------------------------------------------------------------------------------------------------------------------------------
【題目】
  一個三位密碼鎖,每位可能取值1~N。有兩個解鎖密碼,都會給出。
  若嘗試的密碼與某個解鎖密碼相等或相近(每位值都至多差2),均可解開鎖。
  例如:(1,2,3)(4,5,6)是兩個解鎖密碼,那么(1,N,5)(2,4,8)均可解鎖,而(1,5,6)則不可。
【數據范圍】
  1<=N<=100
【輸入樣例】
  50
  1 2 3
  5 6 7
【輸出樣例】
  249
------------------------------------------------------------------------------------------------------------------------------------------------
【分析】
  直接枚舉。
  需要注意,兩個密碼相等的判斷容易出錯(需要%N的情況下,下標并非從0開始;差2及以內均相等,此差2可能與%N同時發生)。
------------------------------------------------------------------------------------------------------------------------------------------------
【總結】
  一遍AC。
  順帶用了下重載運算符與類內置函數的語法,有個小問題存疑:如果我把代碼中add和inRange兩個函數放到Key類里面,那么operator==里面便無法調用這兩個函數。如有人懂,望不吝賜教~

------------------------------------------------------------------------------------------------------------------------------------------------

【代碼】

1 /* 2 ID: icedrea1 3 PROB: combo 4 LANG: C++ 5 */ 6 7 #include <iostream> 8 #include <fstream> 9 using namespace std; 10 11 int N; 12 13 int add(int x,int y) { return (x+y-1+N)%N+1; } 14 bool inRange(int x,int y) { return x==y || add(x,1)==y || add(x,2)==y || add(x,-1)==y || add(x,-2)==y; } 15 16 struct Key 17 { 18 int x,y,z; 19 friend bool operator==(Key a,Key b) { return inRange(a.x,b.x) && inRange(a.y,b.y) && inRange(a.z,b.z); } 20 }; 21 22 Key A,B; 23 24 int main() 25 { 26 ifstream in("combo.in"); 27 ofstream out("combo.out"); 28 29 in>>N; 30 in>>A.x>>A.y>>A.z; 31 in>>B.x>>B.y>>B.z; 32 33 int s=0; 34 Key t; 35 for(t.x=1;t.x<=N;++t.x) 36 for(t.y=1;t.y<=N;++t.y) 37 for(t.z=1;t.z<=N;++t.z) s+=(t==A||t==B); 38 out<<s<<endl; 39 40 in.close(); 41 out.close(); 42 return 0; 43 }

?

轉載于:https://www.cnblogs.com/icedream61/p/4323274.html

總結

以上是生活随笔為你收集整理的USACO Section1.3 Combination Lock 解题报告的全部內容,希望文章能夠幫你解決所遇到的問題。

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