国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

藍橋杯 2014 決賽 2 六角幻方

2019-11-11 03:45:17
字體:
來源:轉載
供稿:網友

把 1 2 3 … 19 共19個整數排列成六角形狀,如下: 要求每個直線上的數字之和必須相等。共有15條直線哦! 再給點線索吧!我們預先填好了2個數字,第一行的頭兩個數字是:15 13,參見圖【p1.png】,黃色一行為所求。 這里寫圖片描述 請你填寫出中間一行的5個數字。數字間用空格分開。

參考答案: 9 6 5 2 16

同樣小學奧數題.首先編號

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

然后DFS就好了. 本來想先算出S,然后生成,后來想想也快不到哪里去,反正也不限時 這里有個非常神奇的就是 如果再DFS里面直接cout 那么就會 Segment fault(Code Dump)不知為何?所以搞了一個ans存答案

#include <bits/stdc++.h>using namespace std;list<int> li;int a[30] = {15, 13};int s = 0;int cnt = 0;vector<int> ans;void dfs(int k){ if (k == 19) { for (int i = 7; i <= 11; i++) ans.push_back(a[i]); } for (auto it = li.begin(); it != li.end(); it++) { if (k == 2) s = a[0] + a[1] + *it; if (k == 6) if (a[3] + a[4] + a[5] + *it != s) continue; if (k == 7) if (a[0] + a[3] + *it != s) continue; if (k == 11) if (a[2] + a[6] + *it != s || a[7] + a[8] + a[9] + a[10] + *it != s) continue; if (k == 12) if (a[1] + a[4] + a[8] + *it != s) continue; if (k == 15) if (a[12] + a[13] + a[14] + *it != s || a[1] + a[5] + a[10] + *it != s) continue; if (k == 16) if (a[7] + a[12] + *it != s || a[2] + a[5] + a[9] + a[13] + *it != s) continue; if (k == 17) if (a[3] + a[8] + a[13] + *it != s || a[6] + a[10] + a[14] + *it != s) continue; if (k == 18) if (a[16] + a[17] + *it != s || a[0] + a[4] + a[9] + a[14] + *it != s || a[11] + a[15] + *it != s) continue; a[k] = *it; it = li.erase(it); dfs(k + 1); it = li.insert(it, a[k]); }}int main(){ for (int i = 1; i < 20; i++) if (i != 15 && i != 13) li.push_back(i); dfs(2); for (int e : ans) { cout << e << ' '; } cout << endl;}

這里寫圖片描述


上一篇:#Poj1845#冪的約數之和

下一篇:dp啊

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 游戏| 扎鲁特旗| 临城县| 太湖县| 东港市| 济南市| 桦南县| 长岭县| 榆树市| 安化县| 菏泽市| 东乡族自治县| 普洱| 平和县| 理塘县| 通海县| 景洪市| 郎溪县| 新安县| 沁阳市| 洪雅县| 宜宾市| 尉氏县| 西吉县| 洪湖市| 南开区| 井冈山市| 错那县| 合肥市| 康乐县| 乡宁县| 镇赉县| 山阴县| 兰考县| 云霄县| 鹰潭市| 叶城县| 定兴县| 嘉祥县| 黄陵县| 明溪县|