社区讨论
新手解题答案
P2615[NOIP 2015 提高组] 神奇的幻方参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @miyqvw9a
- 此快照首次捕获于
- 2025/12/09 23:38 3 个月前
- 此快照最后确认于
- 2025/12/10 06:30 3 个月前
这里是作为一个刚学习C++的新手写的代码,然后加入了一些自己的看法和注释,希望对于各位新手朋友有所帮助。
当然也非常欢迎各位大佬指正和优化我的程序!
CPP#include<bits/stdc++.h>
using namespace std;
int main()
{
int N,medium,count=0;//N为输入容量,count为计数器用来输出用
cin>>N;//输入N
int arr[N][N]={};//给数组放空
medium=(N-1)/2;//计算正中间数
int a[N*N];//给出数组大小
arr[0][medium]=1;//定义中间为1
for(int K=2;K<=N*N;K++)//开始历遍数组
{
int k=K-1;//将K-1用k表示
for(int i=0;i<N;i++)//历遍行数
{
for(int n=0;n<N;n++)//历遍列数
{
if(arr[i][n]==k && i==0 && n!=N-1)
arr[N-1][n+1]=K;//完成第一条
else if(arr[i][n]==k && i!=0 && n==N-1)
arr[i-1][0]=K;//完成第二条
else if(arr[i][n]==k && i==0 && n==N-1)
arr[i+1][n]=K;//完成第三条
else if(arr[i][n]==k && i!=0 && n!=N-1 && arr[i-1][n+1]==0)
arr[i-1][n+1]=K; //第四条(1)
else if(arr[i][n]==k && i!=0 && n!=N-1 && arr[i-1][n+1]!=0)
arr[i+1][n]=K;//第四条(2)
}
}
}
for(int i=0;i<N;i++)//历遍行数
{
for(int n=0;n<N;n++)//历遍列数
{
if(count<N-1)//运用计数器,count可以从1开始,则count<N就行;
{
cout<<arr[i][n]<<" "; //输出
count++;
}
else
{
cout<<arr[i][n]<<endl;
count=0; //每N次就重置计数器,如果count=1,那么这里重置也设置为1;
}
}
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...