数字旋转方阵和上三角(递归问题)
来源:互联网 发布:网狐荣耀 源码 编辑:程序博客网 时间:2024/06/09 17:24
数字旋转方阵:
要求:输入一个整数N(4《=N《=15)
输出要求如下:每个子的输出宽度为4
用递归实现,一圈一圈来填充 没一圈填充都包括向下,向右,向上,向左四种操作,还要注意一圈完成无调用下一圈的参数
import java.util.Scanner;
//数字旋转方阵
public class DigitTurn {
private static int n;//方阵的行和列
private static int[][] a;//保存方阵的值
private static int number=1;//填充的数字
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
a=new int[n][n];
f(0,n-1);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
System.out.printf("%4d",a[i][j]);
}
System.out.println();
}
}
//begin该圈开始的位置(行和列相同) size是填充一圈需要四步,四步需要执行的次数
public static void f(int begin,int size)
{
if(size<0)
return;
if(size==0)//最后一圈只剩下一个元素
{
a[begin][begin]=number;
return;
}
int h=begin,l=begin;
//向下
for(int i=1;i<=size;i++)
{
a[h][l]=number;
number++;
h++;
}
//向右
for(int i=1;i<=size;i++)
{
a[h][l]=number;
number++;
l++;
}
//向上
for(int i=1;i<=size;i++)
{
a[h][l]=number;
number++;
h--;
}
//向左
for(int i=1;i<=size;i++)
{
a[h][l]=number;
number++;
l--;
}
//继续下一圈
f(l+1,size-2);
}
}
数组旋转上三角
数字方阵大小是N * N;
要求:输入一个整数N(4《=N《=15)
输出要求如下:每个子的输出宽度为4
用递归实现,一圈一圈来填充 没一圈填充都包括向下,斜向上,向左四种操作,还要注意一圈完成无调用下一圈的参数
import java.util.Scanner;
//数字旋转上三角
public class DigitTurn2 {
private static int n;//方阵的行和列
private static int[][] a;//保存方阵的值
private static int number=1;//填充的数字
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
a=new int[n][n];
f(0,n-1);
int nn=n;
for(int i=0;i<n;i++)
{
for(int j=0;j<nn;j++)
{
System.out.printf("%4d",a[i][j]);
}
nn--;
System.out.println();
}
}
//begin该圈开始的位置(行和列相同) size是填充一圈需要四步,四步需要执行的次数
public static void f(int begin,int size)
{
if(size<0)
return;
if(size==0)//最后一圈只剩下一个元素
{
a[begin][begin]=number;
return;
}
int h=begin,l=begin;
//向下
for(int i=1;i<=size;i++)
{
a[h][l]=number;
number++;
h++;
}
//斜向上
for(int i=1;i<=size;i++)
{
a[h][l]=number;
number++;
l++;
h--;
}
//向左
for(int i=1;i<=size;i++)
{
a[h][l]=number;
number++;
l--;
}
//调用下一圈
f(l+1,size-3);
}
}
- 数字旋转方阵和上三角(递归问题)
- 数字方阵的旋转填充(递归方法)
- 分治算法之数字旋转方阵问题
- 数字旋转方阵
- 数字旋转方阵
- 旋转方阵问题
- 数字旋转方阵 分治法
- 分治法:数字旋转方阵
- 数字旋转方阵(c#数组的使用)
- 递归求三角数字
- 递归-A-三角数字
- C++ 输出方阵的上三角部分
- 数字三角问题(dp)
- 递归经典算法之多转向旋转方阵
- 螺旋方阵(递归)
- 利用递归计算三角数字
- 旋转方阵
- 旋转方阵
- Ext.Net 1.X _德仔铁观音学习笔记整理
- Oracle ASM常用命令
- 五月学习计划
- django入门笔记8 - session
- django入门笔记9 - auth用户验证&权限
- 数字旋转方阵和上三角(递归问题)
- requestWindowFeature()的应用
- jQuery reference manual
- framer
- find
- python传参方式
- android 获取手机屏幕分辨率和setRequestedOrientation设置屏幕方向
- Py 文件操作
- 程序人生之我们的故事:十年如歌(序)