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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

蓝桥杯2015决赛-方格填数-枚举 or dfs

發布時間:2023/12/4 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯2015决赛-方格填数-枚举 or dfs 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

在2行5列的格子中填入1到10的數字。
要求:相鄰的格子中的數,右邊的大于左邊的,下邊的大于上邊的。
如下圖所示的2種,就是合格的填法。
請你計算一共有多少種可能的方案。

輸出

請輸出該整數,不要輸出任何多余的內容

法一:
代碼如下:

#include <iostream> using namespace std; bool vis[12]; int a[12][12], ans = 0;bool check(int x, int y) {if (x == 0) {if (a[x][y] > a[x][y - 1] || y == 0) {return true;}}if (a[x][y] > a[x][y - 1] && a[x][y] > a[x - 1][y] || y == 0 && a[x][y] > a[x - 1][y])return true;return false; }void dfs(int x, int y) {if (x == 2)ans++;for (int i = 1; i <= 10; i++) {a[x][y] = i;if (!vis[i]) {if (check(x, y)) {vis[i] = true;if (y == 4) {dfs(x + 1, 0);} else {dfs(x, y + 1);}vis[i] = false;}}} }int main() {dfs(0, 0);cout << ans << endl;return 0; }

法二:
代碼如下:

#include <iostream> #include <algorithm> using namespace std;int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int ans;bool check() {if (a[1] > a[0] && a[2] > a[1] && a[3] > a[2] &&a[4] > a[3] && a[6] > a[5] && a[7] > a[6] &&a[8] > a[7] && a[9] > a[8] && a[5] > a[0] &&a[6] > a[1] && a[7] > a[2] && a[8] > a[3] &&a[9] > a[4]) {return true;}return false; }int main() {do {if (check())ans++;} while (next_permutation(a, a + 10));cout << ans << endl;return 0; }

next_permutation()的錯誤使用導致錯誤
樣例代碼如下:

#include <iostream> #include <algorithm> using namespace std;int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int ans;bool check() {//數組下標從0開始,這里卻從1開始,導致錯誤if (a[2] > a[1] && a[3] > a[2] && a[4] > a[3] &&a[5] > a[4] && a[7] > a[6] && a[8] > a[7] &&a[9] > a[8] && a[10] > a[9] && a[6] > a[1] &&a[7] > a[2] && a[8] > a[3] && a[9] > a[10] &&a[10] > a[5]) {return true;}return false; }int main() {do {if (check())ans++;} while (next_permutation(a, a + 10));cout << ans << endl;return 0; }

在這里可以刷一下同樣可以用next_permutation()函數AC的題目:
[藍橋杯2016初賽]方格填數

[藍橋杯2017初賽]紙牌三角形

總結

以上是生活随笔為你收集整理的蓝桥杯2015决赛-方格填数-枚举 or dfs的全部內容,希望文章能夠幫你解決所遇到的問題。

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