蛇形填数1
#include <iostream>
#include <string.h>
#include <cstdio>
using namespace std;
int a[100][100];
int main()
{
int x,y,n,p;
cin>>n;
memset(a,0,sizeof(a));
a[x=0][y=n-1]=1;
p=1;
while(p<n*n)
{
while(x+1<n&&!a[x+1][y])
{
a[++x][y]=++p;
}
while(y-1>=0&&!a[x][y-1])
{
a[x][--y]=++p;
}
while(x-1>=0&&!a[x-1][y])
{
a[--x][y]=++p;
}
while(y+1<n&&!a[x][y+1])
{
a[x][++y]=++p;
}
}
for(x=0;x<n;x++)
{
for(y=0;y<n;y++)
printf("%-5d",a[x][y]);
cout<<endl;
}
return 0;
}
蛇形填数2
#include <iostream>
#include <string.h>
#include <cstdio>
using namespace std;
int a[100][100];
int main()
{
int x,y,n,p,m;
cin>>n;
memset(a,0,sizeof(a));
a[x=0][y=0]=1;
p=1;
m=(n*n+n)/2;
while(p<m)
{
while(y+1<n&&!a[x][y+1])
{
a[x][++y]=++p;
}
while((y-1>=0)&&(x+1<n)&&!a[x+1][y-1])
{
a[++x][--y]=++p;
}
while(x-1>=0&&!a[x-1][y])
{
a[--x][y]=++p;
}
}
for(x=0;x<n;x++)
{
for(y=0;y<(n-x);y++)
printf("%-5d",a[x][y]);
cout<<endl;
}
return 0;
}
蛇形填数3
#include <iostream>
#include <string.h>
#include <cstdio>
using namespace std;
int a[100][100];
int main()
{
int x,y,n,p,m=1,k=2;
cin>>n;
memset(a,0,sizeof(a));
a[x=0][y=0]=1;
p=1;
while(p<n*n&&m<=n)
{
while((y+1<n)&&(x-1>=0)&&!a[x-1][y+1])
{
a[--x][++y]=++p;
}
y=0;x=m;
a[x][0]=++p;
m+=1;
}
x=n-1;y=1;a[n-1][1]=p;m=2;
while(p<n*n&&k<=n)
{
while((y+1<n)&&(x-1>=0)&&!a[x-1][y+1])
{
a[--x][++y]=++p;
}
x=n-1;y=k;
a[x][y]=++p;
k+=1;
}
for(x=0;x<n;x++)
{
for(y=0;y<n;y++)
printf("%-5d",a[x][y]);
cout<<endl;
}
int i,j;
cout<<"请输入你要找的位置:"<<endl;
cin>>i>>j;
printf("%d",a[i-1][j-1]);
cout<<endl;
return 0;
}