请C++高手帮我修改一下这个九宫格程序

2025-01-19 19:23:58
推荐回答(5个)
回答1:

#include
int main()
{
int i,j,k,m;
cin>>m;
int aa[100][100];
for(i=0;i for(j=0;j aa[i][j]=0;
i=0;
j=m/2;
for(k=1;k<=m*m;k++)
{
while(aa[i][j]!=0)
{
i+=2;
j--;
if(j<0)j=m-1;
if(i>=m)i-=m;
}
aa[i][j]=k;
j++;
i--;
if(j==m)j=0;
if(i<0)i=m-1;
}
for(i=0;i {
for(j=0;j cout< cout< }
cout< return 0;
}
这是根据楼上的程序改的
运行后首先输入一个整数然后回车,如3代表3*3,4代表4*4等

回答2:

没错啊

只是最后少了一个花括号。

能运行出来。

回答3:

你的程序要执行4000万至3亿八千万次左右,太多了,略微有点算法都比这个强
这个问题你的程序的复杂度是n的九次方,太高了所以显示出来很慢,你就以为是没显示,
它的规律是中间的a5 肯定是5
a1a2a3a4a6a7a8a9
18349276183492761834927618349276
中任选八个连续的数字片段

回答4:

有点意思

回答5:

#include "stdafx.h"
#include
using namespace std;
int main()
{

int i,j,k,m;
cin>>m;
int aa[100][100];
if(m%2==1)
{
for(i=0;i for(j=0;j aa[i][j]=0;
i=0;
j=m/2;
for(k=1;k<=m*m;k++)
{
while(aa[i][j]!=0)
{
i+=2;
j--;
if(j<0)j=m-1;
if(i>=m)i-=m;
}
aa[i][j]=k;
j++;
i--;
if(j==m)j=0;
if(i<0)i=m-1;
}

}
for(i=0;i {
for(j=0;j cout< cout< }
cout< system("pause");
return 0;
}
VS2008编译,随便你几乘以几的都行,但是M必须是奇数!偶数没办法!