欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
c語言 幻方&分類討論
[打印本頁]
作者:
liuda
時間:
2015-1-22 02:28
標題:
c語言 幻方&分類討論
//萬萬沒想到這幻方的求解還是世界性難題呢
//看了答案才知道這是針對奇數階的幻方
#include<stdio.h>
void main()
{
int i;//矩陣階數
int m,n,k;//k代表矩陣里面的元素
int a[19][19];
printf("please input a number which >=3&&<=19:\n");
scanf("%d",&i);
a[0][(i-1)/2]=1;
m=0;
n=(i-1)/2;
for(k=2;k<=i*i;k++)
{
if(!(a[m-1][n+1]>=1&&a[m-1][n+1]<=(i*i))&&m>=1&&n<i-1) //1這一句是正常情況,要填的位置沒有數字,而且前一位置不在最上邊或最右邊
{
a[m-1][n+1]=k;
m=m-1;
n=n+1;
}
else if(!(a[i-1][n+1]>=1&&a[i-1][n+1]<=(i*i))&&m==0&&n<i-1)//2這一句是行在最上邊的情況,列不在最右邊,要填的位置沒有數字
{
a[i-1][n+1]=k;
m=i-1;
n=n+1;
}
else if(!(a[m-1][0]>=1&&a[m-1][0]<=(i*i))&&m>0&&n==i-1)//3這一句是行不在最上邊,列在最右邊,要填的位置沒有數字
{
a[m-1][0]=k;
m=m-1;
n=0;
}
else if(!(a[i-1][0]>=1&&a[i-1][0]<=(i*i))&&m==0&&n==i-1)//4這一句是行列同時在最上面
{
a[i-1][0]=k;
m=i-1;
n=0;
}
else if(a[m-1][n+1]>=1&&a[m-1][n+1]<=(i*i)&&m>=1&&n<i-1)//1這種情況是要填的地方有數字,而且前一位置不在最上邊或最右邊
{
a[m+1][n]=k;
m=m+1;
}
else if(a[i-1][n+1]>=1&&a[i-1][n+1]<=(i*i)&&m==0&&n<i-1)//2這種情況是要填的地方有數字,行在最上邊的情況,列不在最右邊,
{
a[1][n+1]=k;
m=1;
n=n+1;
}
else if(a[m-1][0]>=1&&a[m-1][0]<=(i*i)&&m>0&&n==i-1)//3這一句是行不在最上邊,列在最右邊,要填的位置有數字
{
a[m-1][i-1]=k;
m=m-1;
n=i-1;
}
else if(a[i-1][0]>=1&&a[i-1][0]<=(i*i)&&m==0&&n==i-1)//4這一句是行列同時在最上面,要填的位置有數字
{
a[1][i-1]=k;
m=1;
n=i-1;
}
else
{
for(m=0;m<=i-1;m++)//這一句是那里都不滿足
for(n=0;n<=i-1;n++)
{
if(a[m][n]<1&&a[m][n]>(i*i))
a[m][n]=i*i;
}
}
}
for(m=0;m<=i-1;m++)
{printf("\n");
for(n=0;n<=i-1;n++)
{printf("%5d",a[m][n]);}
}
printf("\n");
}
復制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1