目录
数字满格
每个格子有8个邻居(部分格子可能只有3-7个邻居),按照这种关系把100个格子转化成无向图,寻找此图的曼哈顿链。
到90是比较容易的,到100就比较难了。
数阵迷踪
上下或左右相邻的2个格子,如果gcd>1则可以连一条线(也可以不连),把所有格子连成一条简单链路。
我的思路就是先把能连的线都连了,再去挑选链路。
如果感觉没法连成链路,那一定是还有没发现的连线(除非题目出错了)
比如这个:
可以用这个代码看下哪些连线是缺的:
//最大公约数
static long long gcd(long long a, long long b)
{
if (b == 0)return a;
return gcd(b, a % b);
}
int main()
{
ios::sync_with_stdio(false);
int n = 8;
vector<vector<int>>v(n,vector<int>(n));
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)cin >> v[i][j];
}
for (int i = 0; i < n; i++) {
for (int j = 1; j < n; j++)if (gcd(v[i][j], v[i][j - 1]) > 1)cout << v[i][j - 1] << " " << v[i][j] << endl;
}
for (int i = 1; i < n; i++) {
for (int j = 0; j < n; j++)if (gcd(v[i][j], v[i-1][j]) > 1)cout << v[i-1][j] << " " << v[i][j] << endl;
}
return 0;
}
补上连线:
果然补上几条连线就能连成链路。
数字迷途
最强大脑同款项目。
把数字补齐,使得1到n*n构成一条哈密顿链路。
我的策略是先从边角开始往中间拼。