循环日程表问题 通过递归实现

来源:互联网 发布:sql server restoring 编辑:程序博客网 时间:2024/06/05 23:01
通过递归实现循环日程表#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>
#include <string>
#include <cstdlib>
#include <algorithm>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <tgmath.h>
#define MAX 10000
using namespace std;
int bound[MAX][MAX];
int calcu(int n)
{
int num = 1;
while(n--)
{
num *= 2;
}
return num;
}
void color(int num)
{
if(num == 1)
{
bound[0][0] = 1;
return;
}
else
{
num = num/2;
color(num);
for(int i = num;i<2*num;i++)
for(int j = num;j<2*num;j++)
{
bound[i][j] = bound[i-num][j-num];
}
for(int i=num;i<2*num;i++)
for(int j = 0;j<num;j++)
{
bound[i][j] = bound[i-num][j] + num;
}
for(int i = 0;i<num;i++)
for(int j = num;j<2*num;j++)
{
bound[i][j] = bound[i][j-num]+num;
}
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int num = calcu(n);
printf("%d\n",num);
color(num);
for(int i  = 0;i<num;i++)
{
for(int j = 0;j< num;j++)
{
printf("%2d ",bound[i][j]);
}
printf("\n");
}
}
return 0;
}问题
0 0
原创粉丝点击