( 不写算法题果然退步了。。。(╥╯^╰╥) )
代码如下:
#include
using namespace std;
#define MAXN 1002
int arr[MAXN][MAXN];
void outPut(int n)
{
bool f = false;
for(int i=1; i<=n; i++)
{
f = false;
for(int j=1; j<=n; j++)
{
if(f)
{
cout<
}
cout<
f = true;
}
cout<
}
}
bool ok1(int n,int k)
{
bool ok = false;
for(int i=1; i
{
if(arr[1][i] == k-1)
{
ok = true;
arr[n][i+1] = k;
break;
}
}
return ok;
}
bool ok2(int n,int k)
{
bool ok = false;
for(int i=2; i<=n; i++)
{
if(arr[i][n] == k-1)
{
ok = true;
arr[i-1][1] = k;
break;
}
}
return ok;
}
bool ok3(int n,int k)
{
bool ok = false;
if(arr[1][n] == k-1)
{
ok = true;
arr[2][n] = k;
}
return ok;
}
void ok4(int n,int k)
{
for(int i=2; i<=n; i++)
{
for(int j=1; j
{
if(arr[i][j] == k-1)
{
// cout<
if(arr[i-1][j+1] == 0)
{
arr[i-1][j+1] = k;
}else
{
arr[i+1][j] = k;
}
break;
}
}
}
return ;
}
int main()
{
int n;
cin>>n;
memset(arr,0,sizeof(arr));
arr[1][n/2+1]=1;
int k = 2;
for(k=2; k<=n*n; k++)
{
if(ok1(n,k))
{
// cout<<1<
continue;
}else if(ok2(n,k))
{
// cout<<2<
continue;
}else if(ok3(n,k))
{
// cout<<3<
continue;
}else
{
// cout<<4<
ok4(n,k);
}
}
outPut(n);
return 0;
}
标签:洛谷
未经允许不得转载:作者:1001-高同学,
转载或复制请以 超链接形式 并注明出处 拜师资源博客。