![]() |
#2
hubinyes2014-03-16 20:51
|

#include<iostream>
using namespace std;
int main()
{
int n,i,j,k; //i表示行,j表示列,n表示阶数,k表示当前需要给数组填入的数字
cout<<"请输入魔方阶数(奇数):"<<endl; //确定阶数
cin>>n;
int **a;
a=new int *[n];
for(i=0;i<=n-1;i++)
{
a[i]=new int [n];
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=0;
a[0][(n-1)/2]=1; //第一行中间元素赋值为1
i=0;
j=(n-1)/2;
for(k=2;k<=n*n;k++)
{
if(i-1<0&&(j+1)>(n-1)) //*****向上向右同时越界填入下一列
{
a[i+1][j]=k;
i++;
continue;
}
if(a[i-1][j+1]!=0) //*****下一位置已有数字则填入下一列
{
a[i+1][j]=k;
i++;
continue;
}
if(i-1<0) //单纯向上越界填入对边下一列
{
cout<<"判断3执行"<<endl;
a[n-1-i][j+1]=k;
i=n-1-i;j=j+1;
continue;
}
if((j+1)>(n-1)) //单纯向右越界填入对边上一行
{
cout<<"判断4执行"<<endl;
a[i-1][n-1-j]=k;
i=i-1;j=n-1-j;
continue;
}
a[i-1][j+1]=k;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<a[i][j]<<' ';
}
cout<<endl;
}
return 0;
}
那个我发现*****这两个判断体进不去,怎么办啊?
using namespace std;
int main()
{
int n,i,j,k; //i表示行,j表示列,n表示阶数,k表示当前需要给数组填入的数字
cout<<"请输入魔方阶数(奇数):"<<endl; //确定阶数
cin>>n;
int **a;
a=new int *[n];
for(i=0;i<=n-1;i++)
{
a[i]=new int [n];
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=0;
a[0][(n-1)/2]=1; //第一行中间元素赋值为1
i=0;
j=(n-1)/2;
for(k=2;k<=n*n;k++)
{
if(i-1<0&&(j+1)>(n-1)) //*****向上向右同时越界填入下一列
{
a[i+1][j]=k;
i++;
continue;
}
if(a[i-1][j+1]!=0) //*****下一位置已有数字则填入下一列
{
a[i+1][j]=k;
i++;
continue;
}
if(i-1<0) //单纯向上越界填入对边下一列
{
cout<<"判断3执行"<<endl;
a[n-1-i][j+1]=k;
i=n-1-i;j=j+1;
continue;
}
if((j+1)>(n-1)) //单纯向右越界填入对边上一行
{
cout<<"判断4执行"<<endl;
a[i-1][n-1-j]=k;
i=i-1;j=n-1-j;
continue;
}
a[i-1][j+1]=k;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<a[i][j]<<' ';
}
cout<<endl;
}
return 0;
}
那个我发现*****这两个判断体进不去,怎么办啊?