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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

洛谷 P2040 打开所有的灯-dfs

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷 P2040 打开所有的灯-dfs 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目背景
pmshz在玩一個益(ruo)智(zhi)的小游戲,目的是打開九盞燈所有的燈,這樣的游戲難倒了pmshz。。。

題目描述
這個燈很奇(fan)怪(ren),點一下就會將這個燈和其周圍四盞燈的開關狀態全部改變。現在你的任務就是就是告訴pmshz要全部打開這些燈。

例如

0 1 1
1 0 0
1 0 1
點一下最中間的燈【2,2】就變成了

0 0 1
0 1 1
1 1 1
再點一下左上角的燈【1,1】就變成了

1 1 1
1 1 1
1 1 1
達成目標。最少需要2步。

輸出2即可。

輸入格式
九個數字,3*3的格式輸入,每兩個數字中間只有一個空格,表示燈初始的開關狀態。(0表示關,1表示開)

輸出格式
1個整數,表示最少打開所有燈所需要的步數。

輸入輸出樣例
輸入
0 1 1
1 0 0
1 0 1
輸出
2

代碼如下:

#include <iostream> using namespace std; const int N = 5; int g[N][N]; int ans = 10; void turn(int x,int y)//開關燈 {g[x][y] = 1-g[x][y];g[x-1][y] = 1-g[x-1][y];g[x+1][y] = 1-g[x+1][y];g[x][y+1] = 1-g[x][y+1];g[x][y-1] = 1-g[x][y-1]; }void dfs(int n) {if (n > ans) return ;//剪枝,不剪枝會超時//超過最小的次數就返回,初始次數為10,規律:它總共步驟不會超過9次int sum = 0;for (int i = 1;i<=3;i++)for (int j = 1;j<=3;j++)sum+=g[i][j];if (sum==9) ans = min(ans,n-1);//加起來等于9,就是燈全部亮的情況for (int i = 1;i<=3;i++)for (int j = 1;j<=3;j++){turn(i,j);dfs(n+1);turn(i,j);} }int main() {for (int i = 1;i<=3;i++)for (int j = 1;j<=3;j++)cin>>g[i][j];dfs(1);cout<<ans<<endl;return 0; }

增加一個標記數組,剪枝。

代碼如下:

#include <iostream> using namespace std; const int N = 5; int g[N][N]; int ans = 10; bool vis[N][N];void turn(int x, int y) { //開關燈g[x][y] = 1 - g[x][y];g[x - 1][y] = 1 - g[x - 1][y];g[x + 1][y] = 1 - g[x + 1][y];g[x][y + 1] = 1 - g[x][y + 1];g[x][y - 1] = 1 - g[x][y - 1]; }void dfs(int n) {if (n > ans)return ;//剪枝,不剪枝會超時//超過最小的次數就返回,初始次數為10,規律:它總共步驟不會超過9次int sum = 0;for (int i = 1; i <= 3; i++)for (int j = 1; j <= 3; j++)sum += g[i][j];if (sum == 9)ans = min(ans, n - 1); //加起來等于9,就是燈全部亮的情況for (int i = 1; i <= 3; i++)for (int j = 1; j <= 3; j++) {if (!vis[i][j]) {vis[i][j] = true;turn(i, j);dfs(n + 1);vis[i][j] = false;turn(i, j);}} }int main() {for (int i = 1; i <= 3; i++)for (int j = 1; j <= 3; j++)cin >> g[i][j];dfs(1);cout << ans << endl;return 0; }

總結

以上是生活随笔為你收集整理的洛谷 P2040 打开所有的灯-dfs的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 成人片免费看 | 小泽玛丽亚在线观看 | 国产高清视频在线 | 美女被啪羞羞粉色视频 | 国产精品欧美一区二区三区 | 日韩二区在线观看 | 好吊一区 | 91插插影库 | 不卡一区二区在线观看 | 国产一区亚洲二区三区 | 国产高清在线精品 | 99久久精品国产一区二区成人 | 性开放耄耋老妇hd | 一出一进一爽一粗一大视频 | 国产精品综合在线 | 性爱免费在线视频 | 欧美激情在线免费 | 久久久一 | 99视频 | 向日葵视频在线 | 精品免费一区二区 | 国产美女免费网站 | 色中色综合网 | 男人的天堂2019 | av大片在线观看 | 伊人亚洲精品 | 亚洲aaaaaaa | 国产网站在线免费观看 | 日日干狠狠干 | 女人的天堂网站 | 欧美色xxxx | 中文字幕在线看高清电影 | 久久精品视频3 | 男生插女生的网站 | 亚欧洲精品 | 涩涩资源站 | 新天堂av| 污网站免费在线 | 日本高清视频在线 | 久艹视频在线观看 | 天天干天天操天天玩 | 国产高清黄色 | 漂亮少妇高潮午夜精品 | 91国内在线视频 | 国产无 | 亚洲福利午夜 | 男女69视频 | 手机av在线免费 | 午夜影院操 | 亚洲大尺度在线观看 | 后入内射欧美99二区视频 | 香蕉亚洲 | 无码人妻丰满熟妇精品区 | 每日av更新 | 国产成人在线视频免费观看 | 肉丝美脚视频一区二区 | 日本xx视频| 人人干视频 | 香蕉大人久久国产成人av | 国产一级片久久 | 海角社区登录 | 欧美中文 | 国产精品77777 | 国产精品不卡av | 特级西西人体444www高清 | 免费拍拍拍网站 | 亚洲视频小说 | 天天干夜夜添 | 在线观看视频一区二区 | 国产精品国产馆在线真实露脸 | 天天躁日日躁狠狠躁欧美 | 越南av| 欧美一级二级在线观看 | 大牛影视剧免费播放在线 | www.日韩| 久久久999精品视频 国产在线xx | 国产一区二区精品在线 | 成人av在线一区二区 | 亚洲精品国产精品乱码 | 日韩中文av | 国产精品免费看片 | 国产精品178页 | 欧美理论在线观看 | 亚洲第三十七页 | 欧美国产综合 | 天天干天天舔天天射 | 午夜在线不卡 | 成年人看的毛片 | 亚洲第一页av | 69xxxx日本 | 九色porny自拍视频在线播放 | 欧美精品免费在线 | 娇妻玩4p被三个男人伺候电影 | 国产探花视频在线观看 | 杨幂一区二区三区免费看视频 | 欧美91精品久久久久国产性生爱 | av免费一区 | 超碰在线成人 | www.av天天 |