精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

遞推算法:令人費(fèi)解的開關(guān)『拉燈』

開發(fā) 前端 算法
游戲者改變一個(gè)燈的狀態(tài)會(huì)產(chǎn)生連鎖反應(yīng):和這個(gè)燈上下左右相鄰的燈也要相應(yīng)地改變其狀態(tài)。

[[411620]]

題目來源 AcWing[1]。

題目

你玩過“拉燈”游戲嗎?

盞燈排成一個(gè) 的方形。

每一個(gè)燈都有一個(gè)開關(guān),游戲者可以改變它的狀態(tài)。

每一步,游戲者可以改變某一個(gè)燈的狀態(tài)。

游戲者改變一個(gè)燈的狀態(tài)會(huì)產(chǎn)生連鎖反應(yīng):和這個(gè)燈上下左右相鄰的燈也要相應(yīng)地改變其狀態(tài)。

我們用數(shù)字 表示一盞開著的燈,用數(shù)字 表示關(guān)著的燈。

下面這種狀態(tài)

  1. 10111 
  2. 01101 
  3. 10111 
  4. 10000 
  5. 11011 

在改變了最左上角的燈的狀態(tài)后將變成:

  1. 01111 
  2. 11101 
  3. 10111 
  4. 10000 
  5. 11011 

再改變它正中間的燈后狀態(tài)將變成:

  1. 01111 
  2. 11001 
  3. 11001 
  4. 10100 
  5. 11011 

給定一些游戲的初始狀態(tài),編寫程序判斷游戲者是否可能在 步以內(nèi)使所有的燈都變亮。

輸入格式

第一行輸入正整數(shù) ,代表數(shù)據(jù)中共有 個(gè)待解決的游戲初始狀態(tài)。

以下若干行數(shù)據(jù)分為 組,每組數(shù)據(jù)有 行,每行 個(gè)字符。

每組數(shù)據(jù)描述了一個(gè)游戲的初始狀態(tài)。

各組數(shù)據(jù)間用一個(gè)空行分隔。

輸出格式

一共輸出 行數(shù)據(jù),每行有一個(gè)小于等于 的整數(shù),它表示對于輸入數(shù)據(jù)中對應(yīng)的游戲狀態(tài)最少需要幾步才能使所有燈變亮。

對于某一個(gè)游戲初始狀態(tài),若 步以內(nèi)無法使所有燈變亮,則輸出 。

數(shù)據(jù)范圍

輸入樣例:

  1. 00111 
  2. 01011 
  3. 10001 
  4. 11010 
  5. 11100 
  6.  
  7. 11101 
  8. 11101 
  9. 11110 
  10. 11111 
  11. 11111 
  12.  
  13. 01111 
  14. 11111 
  15. 11111 
  16. 11111 
  17. 11111 

輸出樣例:

  1. -1 

題解

首先有三點(diǎn)很重要的性質(zhì)需要說明:

  • 如果按哪些燈確定了,那么按這些燈的順序不重要,無論什么順序,結(jié)果都是相同的
  • 我們沒有必要按一盞燈兩次及以上,因?yàn)椋磧纱?,相?dāng)于沒按,按三次,相當(dāng)于按兩次+一次(也就是一次)

因此:

  • 因?yàn)榘礋舻捻樞虿恢匾覀兛梢韵劝训谝恍械臒舳及戳?/li>
  • 我們發(fā)現(xiàn),第一行想按的燈都按過之后,如果想要讓第一行全亮,那么我第二行只能有一種按法,就是按第一行不亮的燈的下面的燈(下面是例子)
  1. 第一行狀態(tài) 10011 (1代表亮的燈) 
  2. 第二行動(dòng)作 01100 (1代表按按鈕) 

那么,我們怎么保證第二行全亮呢?只能用第三行來解決!

那么,我們怎么保證最后一行(第五行)全亮呢?沒法保證!

我們發(fā)現(xiàn),如果第一行按法確定了,那么接下來二三四五行的按法和能不能全亮就確定了。

因此,對于任意一種輸入狀態(tài),我們把第一行 32 種按法全部遍歷一遍,看看哪些可以全亮(通過檢測第五行狀態(tài)),這些全亮的種有沒有操作次數(shù)小于等于 6 的。有的話,就返回這個(gè)操作數(shù),否則就返回 -1 唄。

代碼

  1. #include <iostream> 
  2. #include <cstring> 
  3. #include <algorithm> 
  4. using namespace std; 
  5.  
  6. const int N = 5 + 5;   // 加上 5 更保險(xiǎn) 
  7. // 注意接收時(shí)用字符串更方便,因?yàn)檩斎肓髅啃袥]有空格 
  8. char g[N][N];  // 記錄燈目前的情況 
  9.  
  10. // 上右下左中 
  11. int dx[5] = {0, 1, 0, -1, 0}; 
  12. int dy[5] = {1, 0, -1, 0, 0}; 
  13.  
  14. // 按第 x 行第 y 列,本身和上下左右五個(gè)燈都取反 
  15. void turn(int x, int y) 
  16.     for (int i = 0; i < 5; ++ i) 
  17.     { 
  18.         int a = x + dx[i], b = y + dy[i]; 
  19.         if (0 <= a && a < 5 && 0 <= b && b < 5) 
  20.             g[a][b] = g[a][b] == '1' ? '0''1'
  21.     } 
  22.  
  23. int work() 
  24.     int ans = 2e9; 
  25.     // 第一層循環(huán),把所有第一行按的情況都遍歷 
  26.     // k 是被壓縮了的狀態(tài),最小 0b00000 代表都不按, 
  27.     // 最大 0b11111 代表都按 
  28.      
  29.     // 備份,因?yàn)橄旅娴牟僮鲿?huì)改變 g 
  30.     char backup[N][N]; 
  31.     memcpy(backup, g, sizeof g); 
  32.  
  33.     for (int k = 0; k < (1 << 5); ++ k) 
  34.     { 
  35.         // 確保我們的 g 是輸入的 g 
  36.         memcpy(g, backup, sizeof backup); 
  37.  
  38.         // 當(dāng)?shù)谝恍袨?nbsp;k 時(shí),總操作次數(shù)是.. 
  39.         int res = 0;  // 用 res 來記錄 
  40.  
  41.         // 執(zhí)行 k (根據(jù) k 把第一行按了) 
  42.         for (int j = 0; j < 5; ++ j) 
  43.         { 
  44.             if (k >> j & 1) 
  45.             { 
  46.                 res ++; 
  47.                 turn(0, j); 
  48.             } 
  49.         } 
  50.          
  51.         // 第一行確定了,第二行就確定了 
  52.         // 因?yàn)橹挥泻侠聿僮鞯诙?nbsp;
  53.         // 才能把第一行全部點(diǎn)亮 
  54.         // 以此類推,第二行定了后,第三行就被第二行決定了 
  55.         for (int i = 0; i < 4; ++ i) 
  56.         { 
  57.             for (int j = 0; j < 5; ++ j) 
  58.             { 
  59.                 if (g[i][j] == '0'
  60.                 { 
  61.                     res ++; 
  62.                     turn(i + 1, j); 
  63.                 } 
  64.             } 
  65.         } 
  66.  
  67.         // 上面的操作一定能保證前 4 行全亮 
  68.         // 但是第 5 行不一定全亮,第 5 行全亮,才是真正有效的操作 
  69.         bool success = true
  70.         for (int j = 0; j < 5; ++ j) 
  71.         { 
  72.             if (g[4][j] == '0'
  73.             { 
  74.                 success = false
  75.                 break; 
  76.             } 
  77.         } 
  78.          
  79.         // 如果是有效的操作,咱看看一共按了幾次開關(guān) 
  80.         if (success) ans = min(res, ans); 
  81.     } 
  82.      
  83.     // 根據(jù)題意返回輸出值 
  84.     if (ans > 6) return -1; 
  85.     return ans; 
  86.  
  87. int main() 
  88.     int n; 
  89.     cin >> n; 
  90.     while (n -- ) 
  91.     { 
  92.         for (int i = 0; i < 5; ++ i) cin >> g[i]; 
  93.         printf("%d\n"work()); 
  94.     } 

參考資料

[1]

 

AcWing: https://www.acwing.com/

 

責(zé)任編輯:武曉燕 來源: Piper蛋窩
相關(guān)推薦

2022-06-10 08:37:45

微軟WindowsWindows 11

2014-11-17 18:23:35

云服務(wù)大數(shù)據(jù)

2010-12-15 17:25:59

Exchange Se

2011-08-02 13:16:36

Objective-C 語法 函數(shù)

2018-09-15 05:09:28

2009-09-11 09:18:17

ASP.NET MVC

2010-03-25 12:21:44

無線網(wǎng)絡(luò)掉線故障

2023-03-13 08:33:36

java邏輯準(zhǔn)確值

2013-02-27 09:16:34

2023-12-14 07:33:29

Edge瀏覽器微軟

2017-09-14 09:40:32

PythonUbuntu信號機(jī)制

2020-07-29 09:50:54

人工智能網(wǎng)絡(luò)安全技術(shù)

2024-08-08 16:17:29

2013-03-22 10:30:16

IT主管ITM云計(jì)算

2017-01-19 09:12:39

Apriori算法流程

2018-04-09 11:11:03

RGB臺(tái)式機(jī)主機(jī)

2025-04-21 06:53:57

2012-03-23 14:38:31

JavaScript

2011-06-15 10:20:50

Ubuntu 11.0

2015-08-19 16:14:10

云共享數(shù)據(jù)共享云存儲(chǔ)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

亚洲热线99精品视频| 中文字幕亚洲电影| 秋霞午夜一区二区| 青青操在线播放| 视频在线一区| 色噜噜狠狠色综合欧洲selulu| 91手机视频在线| 天天操天天操天天操| 日本特黄久久久高潮| 久久97久久97精品免视看| 久久av无码精品人妻系列试探| 国产一区精品二区| 色8久久人人97超碰香蕉987| 国产高清不卡无码视频| 国产高清一级毛片在线不卡| 国产69精品一区二区亚洲孕妇| 日本精品性网站在线观看| 男女羞羞免费视频| 精品国产91久久久久久浪潮蜜月| 精品少妇一区二区三区日产乱码 | 成人线上视频| 亚洲精品视频在线观看免费| 日韩影片在线播放| 日韩亚洲视频在线观看| 国产成人丝袜美腿| 成人av资源在线播放| 亚洲成熟少妇视频在线观看| 99热这里只有精品8| 欧美成在线观看| 战狼4完整免费观看在线播放版| 日韩成人动漫在线观看| 欧美变态tickle挠乳网站| 亚洲三级在线观看视频| 99久久伊人| 9l视频自拍蝌蚪9l视频成人| 亚洲制服少妇| 国产精品综合| 久久国产精品久久久久久| 亚洲黄色小说视频| 成人18视频免费69| av中文在线观看| 久久久久国产精品一区三寸| 久久久久久久久久婷婷| 国产传媒免费在线观看| 亚洲黄色影片| 欧美日韩一区二区三区视频| 国产乱子伦农村叉叉叉| 国模私拍视频在线播放| 亚洲日本韩国一区| 中文字幕在线亚洲精品| 超碰免费在线| 国产精品污污网站在线观看| 视频一区二区三区中文字幕| 中文字幕视频一区二区在线有码| 免费的av网站| 国产精品qvod| 欧美成人综合网站| 国产精品久久免费| 国产电影一区二区在线观看| 精品香蕉一区二区三区| 熟妇人妻久久中文字幕| 欧美尿孔扩张虐视频| 亚洲成人av中文字幕| 妖精视频一区二区| 秋霞在线一区| 亚洲人成网站免费播放| 亚洲观看黄色网| 美女av一区| 九色|91porny| 国产成一区二区| 中文字幕 国产精品| 日韩精品电影在线观看| 国产精品老女人精品视频| 国产成人精品一区二区色戒| 久久精品国产一区二区三| 91久久久久久国产精品| 亚洲精品久久久久久久久久久久久久| 成人高清视频免费观看| 久久涩涩网站| 日韩精品成人av| 亚洲男同1069视频| av在线观看地址| 成人av观看| 欧美人与性动xxxx| 日本少妇xxxx软件| 啄木系列成人av电影| 中文字幕精品一区二区精品| 福利所第一导航| 国产精品一区亚洲| 成人精品一区二区三区电影免费| 好吊视频一二三区| 国产三级欧美三级日产三级99| 中文字幕一区二区三区四区五区 | 国产成人精品av久久| 翔田千里一区二区| 91中文字幕在线观看| 午夜国产在线视频| 一区在线观看免费| 波多野结衣家庭教师在线| 色8久久久久| 精品亚洲男同gayvideo网站| 亚洲一级二级片| 久久激情一区| wwwxx欧美| 91caoporn在线| 亚洲mv大片欧洲mv大片精品| 成人亚洲精品777777大片| 欧美激情15p| 久久久精品2019中文字幕神马| 日本特级黄色片| 国产精品538一区二区在线| 日韩免费av电影| free性欧美| 欧美一区二区视频观看视频| 免费视频91蜜桃| 99riav国产精品| 亚洲影院色无极综合| av电影在线观看| 欧美午夜宅男影院在线观看| 韩国一区二区三区四区| 久久精品99久久无色码中文字幕| 国产91精品久久久| 黑人精品一区二区三区| 日韩一区中文字幕| 日韩欧美国产片| 狠狠色丁香婷婷综合影院| 98视频在线噜噜噜国产| 亚洲国产www| 一区二区三区在线观看视频 | 丁香婷婷综合激情五月色| 最新视频 - x88av| 中文字幕日韩亚洲| 中文字幕日韩高清| 日韩乱码一区二区三区| 久久久综合精品| 97国产精东麻豆人妻电影| 超碰精品在线| 欧美激情一区二区三区高清视频| 国产三区在线播放| 亚洲欧美另类综合偷拍| 婷婷中文字幕在线观看| 欧美顶级大胆免费视频| 91精品久久久久久久| 麻豆传媒在线完整视频| 欧美区视频在线观看| 一级性生活免费视频| 精品一区二区三区免费观看| 国产美女视频免费| 日韩视频一二区| 久久97精品久久久久久久不卡| 亚洲国产精品欧美久久| 亚洲一区二区黄色| 无码一区二区精品| 麻豆成人精品| 亚洲一区3d动漫同人无遮挡| 久久亚洲人体| 久国内精品在线| 日韩一级中文字幕| 高潮白浆女日韩av免费看| 欧美bbbbb性bbbbb视频| 日韩av二区在线播放| 亚洲日本一区二区三区在线不卡| 欧美性生活一级| 欧美精品在线看| 四虎免费在线观看| 在线一区二区视频| 国语对白在线播放| 懂色av中文一区二区三区| 欧美黑人经典片免费观看| 九一精品国产| 成人精品aaaa网站| a'aaa级片在线观看| 亚洲色图在线观看| 一区二区三区www污污污网站| 一区二区三区中文在线| 国产精品伦子伦| 麻豆精品一区二区三区| a级片一区二区| 婷婷综合一区| 91精品久久久久久久久| 不卡av免费观看| 国产一区av在线| 国产丝袜视频在线观看| 欧美日韩中文字幕日韩欧美| 天天操天天舔天天射| 国产成人三级在线观看| 黄色片视频在线免费观看| 91亚洲国产| 精品人伦一区二区三区| 六九午夜精品视频| 97免费中文视频在线观看| 91精品专区| 亚洲成人a级网| 一级黄色片免费看| 欧美日韩亚洲视频| 丝袜美腿小色网| 国产网站一区二区| 9.1在线观看免费| 麻豆国产精品官网| 日韩在线视频在线观看| 午夜激情久久| 欧美一区二区三区精美影视| 看亚洲a级一级毛片| 日韩av免费看| 97人澡人人添人人爽欧美| 精品国产一区二区三区久久久| 亚洲人妻一区二区| 日韩欧美另类在线| 91精品国产乱码久久| 一本高清dvd不卡在线观看| 久草成人在线视频| 国产精品成人在线观看| 国产成人av一区二区三区不卡| 国产精品香蕉一区二区三区| 欧美一级特黄a| 亚洲欧美成人| 一二三四视频社区在线| 欧美99在线视频观看| 亚洲精品影院| 国产剧情在线观看一区| 久久成人资源| 欧美顶级毛片在线播放| 成人片在线免费看| 欧美一区一区| 成人精品一区二区三区| 日韩在线电影| 国产一区二区香蕉| 69堂免费精品视频在线播放| 日av在线播放中文不卡| 在线毛片观看| 欧美亚洲成人网| 性欧美18xxxhd| 91精品91久久久久久| freexxx性亚洲精品| 欧美精品aaa| 2021天堂中文幕一二区在线观| 另类图片亚洲另类| bt在线麻豆视频| 久久伊人精品视频| 国产激情在线观看| 欧美成年人视频网站| 成人在线免费看黄| 欧美乱大交xxxxx另类电影| 99热国产在线中文| 欧美高清在线观看| 成人国产电影在线观看| 2019中文在线观看| 日韩毛片免费观看| 国产精品扒开腿做爽爽爽的视频| 亚洲国产尤物| 国产一区二区色| 欧美h版在线观看| 国产精品我不卡| 日韩黄色网络| 日韩成人av网站| 97久久视频| 欧美在线观看视频免费| 亚洲黄色影院| 国产成人久久777777| 美国一区二区三区在线播放 | 天堂中文资源在线观看| 日韩久久精品电影| av在线女优影院| 久久久999国产精品| 亚洲小说区图片| 97人洗澡人人免费公开视频碰碰碰| 男人的天堂免费在线视频| 国产成人一区二| 亚洲精品777| 国产精品一区二区三区精品| 午夜欧洲一区| 一级日韩一区在线观看| 伊人久久亚洲美女图片| 亚洲三级在线看| 亚洲综合图片一区| 亚洲精品高清在线| 日本亚洲色大成网站www久久| 97久久亚洲| 97超碰在线播放| 婷婷精品视频| 亚洲一区不卡在线| 亚洲午夜黄色| 五月婷婷深爱五月| 国产成人精品免费视频网站| 亚洲天堂久久新| 亚洲猫色日本管| 日韩精品在线观看免费| 欧美日韩高清一区| 婷婷伊人综合中文字幕| 色妞欧美日韩在线| 成年女人在线看片| 国产精品香蕉在线观看| 久久动漫网址| 吴梦梦av在线| 久久www成人_看片免费不卡| 999在线精品视频| 91麻豆.com| 久久久久亚洲av无码专区 | 国产精品一区二区三区www| 国产一区二区无遮挡| 五月天激情综合网| 丁香婷婷激情网| 91在线精品一区二区三区| 裸体武打性艳史| 欧美色网一区二区| 三级在线电影| 欧美激情xxxx性bbbb| 欧美成人三级| 欧美一区二区视频在线| 亚洲激情亚洲| 深夜做爰性大片蜜桃| 欧美国产日韩亚洲一区| 亚洲另类欧美日韩| 精品日韩一区二区三区| 黄色网页在线播放| 国产精品爽爽爽| 国产一区二区三区天码| 男人的天堂狠狠干| 成人自拍视频在线观看| 国产黄在线免费观看| 欧美另类videos死尸| 国产成人天天5g影院在线观看| 午夜精品一区二区三区在线播放| 日韩中文字幕视频网| 亚洲在线欧美| 美女精品一区二区| 日本午夜精品视频| 欧美性猛交一区二区三区精品| 欧美日韩伦理片| 欧美野外猛男的大粗鳮| 日韩深夜福利| 丝袜老师办公室里做好紧好爽| av午夜一区麻豆| 国产精品16p| 欧美精品一区二区三区在线播放| 香蕉成人app免费看片| 91性高湖久久久久久久久_久久99| 999久久久91| 激情五月俺来也| 一区在线观看免费| 国产麻豆一精品一男同| 久久躁日日躁aaaaxxxx| 只有精品亚洲| 影音先锋成人资源网站| 国产成人综合精品三级| 欧美激情国产精品免费| 精品国产免费视频| 成年女人在线看片| 欧美日韩综合网| 日本午夜精品视频在线观看| 免费成人深夜夜行p站| 亚洲特黄一级片| 国产乱色精品成人免费视频| 日韩中文在线视频| 国产精品一区二区三区av| 日本aa在线观看| 成人av在线网站| 亚洲免费在线观看av| 亚洲免费视频在线观看| 色婷婷综合久久久中字幕精品久久| 欧美重口乱码一区二区| 男人的j进女人的j一区| 国产精品久久久久久久av大片| 国产一区毛片| 波多野结衣xxxx| 一区二区三区四区中文字幕| 日韩在线视频观看免费| 青青精品视频播放| 99久久www免费| 无码人妻精品一区二区三| 欧美午夜电影在线| 自拍视频在线网| 91九色对白| 国产精品免费看| 91视频免费看片| 精品成人一区二区三区四区| 小视频免费在线观看| 色噜噜在线播放| 国产精欧美一区二区三区| 五月综合激情| 亚洲精品女人久久久| 欧美性欧美巨大黑白大战| 毛片在线网址| 欧美在线视频一区二区三区| 激情文学综合丁香| 欧美三级一区二区三区| 日韩中文综合网| 欧美人成在线观看ccc36| 粉色视频免费看| 激情成人中文字幕| 午夜国产福利在线| 精品日韩电影| 国产一区999| 蜜臀精品一区二区三区| 欧美精品九九久久| 日本午夜一区| 黄色国产在线观看| 日韩欧美久久一区| 日韩成人在线电影| 精品视频一区二区在线|