七星填数
Posted 8023spz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了七星填数相关的知识,希望对你有一定的参考价值。
在七角星的14个节点上填入1~14 的数字,不重复,不遗漏。
要求每条直线上的四个数字之和必须相等。
图中已经给出了3个数字。
请计算其它位置要填充的数字,答案唯一。
填好后,请提交绿色节点的4个数字(从左到右,用空格分开)
比如:12 5 4 8
当然,这不是正确的答案。
注意:只提交4个用空格分开的数字,不要填写任何多余的内容。
答案:
代码:
#include <iostream> using namespace std; int ch[11] = {1,2,3,4,5,7,8,9,10,12,13}; bool vis[11]; int to[11][2] = {4,5,1,4,0,4,3,4,1,5,0,3,2,5,3,6,2,6,2,3,5,6}; int ans[11]; int sum[7] = {17,20,14,0,0,0,11}; int n = (1 + 14) * 2; void dfs(int k) { if(k >= 11) { for(int i = 0;i < 4;i ++) { cout<<ans[i]<<‘ ‘; } return; } for(int i = 0;i < 11;i ++) { if(vis[i] || sum[to[k][0]] + ch[i] > n || sum[to[k][1]] + ch[i] > n) continue; vis[i] = true; sum[to[k][0]] += ch[i]; sum[to[k][1]] += ch[i]; ans[k] = ch[i]; dfs(k + 1); sum[to[k][1]] -= ch[i]; sum[to[k][0]] -= ch[i]; vis[i] = false; } } int main() { dfs(0); }
以上是关于七星填数的主要内容,如果未能解决你的问题,请参考以下文章