数字旋转方阵 分治法
来源:互联网 发布:威锋认证的淘宝店 编辑:程序博客网 时间:2024/04/26 12:09
/*********************
数字旋转方阵
分治法
187
296
345
********************/
#include <stdio.h>
#define N 10 //定义符号常量N
int data[N][N]={0}; //定义全局数组data[N][N]并初始化为0
void Full(int number,int begin,int size) //填写旋转方阵
{ //从number开始填写size阶方阵,左上角的下表为(begin,begin)
int i,j,k;
if(size == 0) //递归的边界条件,如果size=0,则无需填写
return;
if(size == 1) //递归的边界条件,如果size=1
{
data[begin][begin] = number; //只填写number
return;
}
i = begin;j = begin; //初始化左上角下标
for(k = 0;k < size - 1;k++) //填写区域A,共size-1个数
{
data[i][j] = number;number++; //当前位置填写number
i++; //行下标加1
}
for(k = 0;k<size-1;k++) //填写B区域,共size-1个数
{
data[i][j] = number;number++;
j++;
}
for(k = 0;k < size - 1;k++) //填写区域C,共size-1个数
{
data[i][j] = number;number++; //当前位置填写number
i--; //行下标减一
}
for(k = 0;k<size-1;k++) //填写D区域,共size-1个数
{
data[i][j] = number;number++;
j--; //行下标减一
}
Full(number,begin+1,size-2); //递归调用,左上角下标为size-1
return; //结束函数Full的执行
}
void OutPrint(int size) //输出旋转方阵
{
int i,j;
for(i = 0;i < size; i++) //输出第i行
{
for(j = 0;j < size;j++) //输出第j列
printf("%4d",data[i][j]);
printf("\n");
}
}
int main()
{
int n;
printf("输入方阵阶数(小于10):");
scanf("%d",&n);
Full(1,0,n);
OutPrint(n);
return 0;
}
数字旋转方阵
分治法
187
296
345
********************/
#include <stdio.h>
#define N 10 //定义符号常量N
int data[N][N]={0}; //定义全局数组data[N][N]并初始化为0
void Full(int number,int begin,int size) //填写旋转方阵
{ //从number开始填写size阶方阵,左上角的下表为(begin,begin)
int i,j,k;
if(size == 0) //递归的边界条件,如果size=0,则无需填写
return;
if(size == 1) //递归的边界条件,如果size=1
{
data[begin][begin] = number; //只填写number
return;
}
i = begin;j = begin; //初始化左上角下标
for(k = 0;k < size - 1;k++) //填写区域A,共size-1个数
{
data[i][j] = number;number++; //当前位置填写number
i++; //行下标加1
}
for(k = 0;k<size-1;k++) //填写B区域,共size-1个数
{
data[i][j] = number;number++;
j++;
}
for(k = 0;k < size - 1;k++) //填写区域C,共size-1个数
{
data[i][j] = number;number++; //当前位置填写number
i--; //行下标减一
}
for(k = 0;k<size-1;k++) //填写D区域,共size-1个数
{
data[i][j] = number;number++;
j--; //行下标减一
}
Full(number,begin+1,size-2); //递归调用,左上角下标为size-1
return; //结束函数Full的执行
}
void OutPrint(int size) //输出旋转方阵
{
int i,j;
for(i = 0;i < size; i++) //输出第i行
{
for(j = 0;j < size;j++) //输出第j列
printf("%4d",data[i][j]);
printf("\n");
}
}
int main()
{
int n;
printf("输入方阵阶数(小于10):");
scanf("%d",&n);
Full(1,0,n);
OutPrint(n);
return 0;
}
1 0
- 数字旋转方阵 分治法
- 分治法:数字旋转方阵
- 蓝桥杯之最简单的分治法-----数字旋转方阵
- 分治算法之数字旋转方阵问题
- 数字旋转方阵
- 数字旋转方阵
- 旋转方阵
- 旋转方阵
- 分治法 Strassen算法计算方阵相乘
- 数字旋转方阵(c#数组的使用)
- 数字旋转方阵和上三角(递归问题)
- 数字方阵的旋转填充(递归方法)
- 数字方阵
- 旋转方阵妙解
- 旋转方阵问题
- 7.方阵旋转
- 5.方阵旋转
- 旋转方阵java编写
- java中try-catch-finally返回值问题
- 深入理解Java:注解(Annotation)自定义注解入门
- 建立一个类SUM,求二维数组外围各元素的和,并且输出数组各元素及所求之和。具体要求如下:
- JAVA 进制转换
- 单链表的初始化、插入、删除、查找
- 数字旋转方阵 分治法
- 历届试题 打印十字图 (蓝桥杯)
- UVA
- jQuery的应用
- c语言中关于数组的一些基本运算
- 博弈论
- SSL2295 暗黑破坏神(dp)
- 自篡改Dalvik字节码delta.apk原理
- java io