求助!!!
查看原帖
求助!!!
464385
不想做选择。楼主2021/10/19 17:23
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int map[40][40],n,k=1,flag,x,y;
int main()
{
	memset(map,0,sizeof(map));
	cin>>n;
	map[1][(n+1)/2]=1;
	while(k<pow(n,2))
	{
		flag=0;
		k++;
		if(!flag)
		{
			for(int i=1;i<n;i++)
		    {
			    if(map[1][i]==k-1)
			    {
				    map[n][i+1]=k;
				    flag=1;
				    break;
			    }
		    }
		}
		if(!flag)
		{
			for(int i=2;i<=n;i++)
		    {
			    if(map[i][n]==k-1)
			    {
				    map[i-1][1]=k;
				    flag=1;
				    break;
			    }
		    }
		}
		if(!flag)
		{
			if(map[1][n]==k-1)
		    {
			    flag=1;
			    map[2][n]=k;
		    }
		}
		if(!flag)
		{
			for(int i=2;i<=n;i++)
			for(int j=1;j<n;j++)
			{
				if(map[i][j]==k-1)
				{
					x=i;
					y=j;
				}
			}
			if(map[x-1][y+1]==0)
			map[x-1][y+1]==k;
			else
            map[x+1][y]=k;		
		}
	}
	//cout<<k<<endl;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		cout<<map[i][j]<<" ";
        cout<<endl;	
	}
    return 0;
}

输入:3

输出:

0 1 0
3 0 0
4 0 2
2021/10/19 17:23
加载中...