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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

第七届蓝桥杯(国赛)——随意组合-dfs,next_permutation

發布時間:2023/12/4 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第七届蓝桥杯(国赛)——随意组合-dfs,next_permutation 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【問題描述】

小明被綁架到X星球的巫師W那里。 其時,W正在玩弄兩組數據 (2 3 5 8) 和 (1 4 6 7) 他命令小明從一組數據中分別取數與另一組中的數配對,共配成4對(組中的每個數必被用到)。 小明的配法是:{(8,7),(5,6),(3,4),(2,1)} 巫師凝視片刻,突然說這個配法太棒了! 因為: 每個配對中的數字組成兩位數,求平方和,無論正倒,居然相等: 872 + 562 + 342 + 212 = 12302 782 + 652 + 432 + 122 = 12302 小明想了想說:“這有什么奇怪呢,我們地球人都知道,隨便配配也可以啊!” {(8,6),(5,4),(3,1),(2,7)} 862 + 542 + 312 + 272 = 12002 682 + 452 + 132 + 722 = 12002 巫師頓時凌亂了。。。。。 請你計算一下,包括上邊給出的兩種配法,巫師的兩組數據一共有多少種配對方案具有該特征。 配對方案計數時,不考慮配對的出現次序。 就是說: {(8,7),(5,6),(3,4),(2,1)} 與 {(5,6),(8,7),(3,4),(2,1)} 是同一種方案。

【答案提交】
注意:需要提交的是一個整數,不要填寫任何多余內容(比如,解釋說明文字等)

答案:24

法一:
代碼如下:

#include <iostream> using namespace std; const int N = 6;int a[] = {2, 3, 5, 8};int b[] = {1, 4, 6, 7}; bool vis[15]; int c[N]; long long sum_a; long long sum_b; int ans;void dfs(int u) {if (u == 4) {for (int i = 0; i < 4; i++) {sum_a += (a[i] * 10 + c[i]) * (a[i] * 10 + c[i]);sum_b += (c[i] * 10 + a[i]) * (c[i] * 10 + a[i]);}if (sum_a == sum_b) {ans++;return ;}}for (int i = 0; i < 4; i++) {if (!vis[b[i]]) {vis[b[i]] = true;c[u] = b[i];dfs(u + 1);vis[b[i]] = false;}} }int main() {dfs(0);cout << ans << endl;return 0; }

法二:
代碼如下:

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

總結

以上是生活随笔為你收集整理的第七届蓝桥杯(国赛)——随意组合-dfs,next_permutation的全部內容,希望文章能夠幫你解決所遇到的問題。

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