百练+幻方+按照规则模拟

来源:互联网 发布:php 爬虫 解析html 编辑:程序博客网 时间:2024/05/16 14:45
点击打开链接
///幻方#include<stdio.h>#include<stdlib.h>#include<iostream>#include<string.h>#include<cstring>#include<string>#include<algorithm>#include<math.h>#include<queue>#include<set>#include<stack>#include<string>#include<map>#define LL long long#define inf 0x3f3f3f3f#define maxn 1e5+5using namespace std;int main(){int a[40][40]={0};int n,nc;cin>>n;int length;length =2*n-1;nc = length*length;int i,j;int ipre,jpre;for(i=0;i<nc;i++){if(i==0){///填第一个数字。ipre=0;jpre=n-1;a[ipre][jpre]=i+1;continue;}else if(jpre == length -1 &&ipre != 0){///数字在最后一列,且不是右上角。ipre=ipre-1;jpre=0;a[ipre][jpre]=i+1;}else if(ipre==0 && jpre!=length-1 ){///数字在第一行,且不在右上角。ipre=length-1;jpre=jpre+1;a[ipre][jpre]=i+1;}else if((ipre == 0&& jpre==length-1)||a[ipre-1][jpre+1]!=0){///右上角,或者右上方有数字。这个一定要摆在前两个条件之后ipre=ipre+1;jpre=jpre;a[ipre][jpre]=i+1;}else{///填充右上方。ipre=ipre-1;jpre=jpre+1;a[ipre][jpre]=i+1;}}    for(i=0; i<length; i++){        for(j=0; j<length; j++)            if(j==0)                cout<<a[i][j];            else                cout<<" "<<a[i][j];        cout<<endl;    }return 0;}

0 0
原创粉丝点击