@[Angela_mum](/user/772333) 不懂就问,什么是数独?
by _扬子江_ @ 2022-09-01 16:29:30
这题是构造+模拟
by Element_e @ 2022-09-01 16:32:43
@[Angela_mum](/user/772333) 众所周知,幻方和数独都是个正方形,但却没有一点相似之处
by gongziwen @ 2022-09-01 16:39:32
@[gongziwen](/user/418739) 数独是每行每列每宫各个数字各不相等,但幻方却是每行每列每对角线和相等
by gongziwen @ 2022-09-01 16:41:59
AC代码:
```c
#include<bits/stdc++.h>
using namespace std;
long long arr[105][105]={0},n,x,y;
int main(){
cin>>n;
x=1;y=n/2+1;
arr[x][y]=1;
for(int i=2;i<=n*n;i++){
if(x==1&&y!=n){//若 (K-1)(K?1) 在第一行但不在最后一列,则将 KK 填在最后一行, (K-1)(K?1) 所在列的右一列;
x=n;
y++;
}else if(y==n&&x!=1){//若 (K-1)(K?1) 在最后一列但不在第一行,则将 KK 填在第一列, (K-1)(K?1) 所在行的上一行;
y=1;
x--;
}else if(x==1&&y==n){//若 (K-1)(K?1) 在第一行最后一列,则将 KK 填在 (K-1)(K?1) 的正下方;
x++;
}else if(x!=1&&y!=n){//若 (K-1)(K?1) 既不在第一行,也不在最后一列,如果 (K-1)(K?1) 的右上方还未填数,则将 KK 填在 (K-1)(K?1) 的右上方,否则将 KK 填在 (K-1)(K?1) 的正下方。
if(arr[x-1][y+1]==0){
x--;
y++;
}else{
x++;
}
}
arr[x][y]=i;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<arr[i][j]<<' ';
}
cout<<endl;
}
return 0;
}
```
by register_new @ 2022-09-01 17:09:20
幻方是一种很神奇的 N*NN∗N 矩阵:它由数字 1,2,3,\cdots \cdots ,N \times N1,2,3,⋯⋯,N×N 构成,且每行、每列及两条对角线上的数字之和都相同。//来自原题
by williamY @ 2022-09-01 17:13:11
AC代码:
```cpp
#include <iostream>
using namespace std;
const int maxN = 1530;
int a[maxN][maxN];
int main()
{
int n;
cin >> n;
int mid = n / 2 + 1, r = 1, c = n / 2 + 1;
a[1][mid] = 1;
for(int i = 2; i <= n * n; i++)
{
if(a[r - 1][c + 1] != 0 || (r - 1 < 1 && c + 1 > n))
{
r += 1;
a[r][c] = i;
}
else if(r - 1 < 1)
{
r = n;
c += 1;
a[r][c] = i;
}
else if(c + 1 > n)
{
r -= 1;
c = 1;
a[r][c] = i;
}
else
{
r -= 1;
c += 1;
a[r][c] = i;
}
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
cout << a[i][j] << ' ';
}
cout << endl;
}
return 0;
}
```
by williamY @ 2022-09-01 17:13:52
@[williamY](/user/315695) @[zhuangkaiyu](/user/740907) tlqtj,jbl
by 初星逝者 @ 2022-09-01 17:15:12
@[初星逝者](/user/376679) jbl是什么意思?
by register_new @ 2022-09-01 17:20:11
@[初星逝者](/user/376679) 这不算tlqtj
by ahahha @ 2022-09-01 17:20:28