4239人阅读
java算法(133)
* 从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:
输入数字2,则程序输出:
输入数字3,则程序输出:
输入数字4, 则程序输出:
import java.util.S
public class Demo08 {
public static void show(int[][] m) {
for(int[] x:m){
for(int y:x){
System.out.print(y+&\t&);
System.out.println(&&);
// 顺时针螺旋
public static int[][] helix(int n) {
int[][] m = new int[n][n]; // 产生空矩阵
int t = n*n; // 填充矩阵从1到n*n个数
int i = 0;
// 填充数字的位置(行下标)
int j = 0;
// 填充数字的位置(列下标)
int start = 0; // 每填充一圈时用的边界(左上)
int end = // 每填充一圈时用的边界(右下)
int x = 0;
// 填充左侧一竖列数字时用的起始位置(行下标)
int y = 0;
// 填充左侧一竖列数字时用的起始位置(列下标)
int count = 0; // 标记那段程序执行,那段程序不执行
for(int s=1;s&=t;s++){
if(i==start&&j&end){ // 如果是第一行
m[i][j++] =
// 填充第一行
}else if(i&end-1&&count&1){ // count==0时处理
j = end-1; // 列设置为右边界
i++; // 行下标 下移
if(i&start&&i&end){
if(j&start){
if(i==end-1){ // 到下边界了
m[i][j--] = // 填充下边界
m[i][j] = // 填充右侧一竖列数字
}else if(count==0){ // 只当count==0 时执行一次
m[i][j] = // 填充到了左下角的元素
// 开始从下向上填充左侧元素(行坐标上移)
// 用新的下标x来填充左侧 (行下标)
// 用新的下标y来填充左侧 (列下标)
}else if(x&start&&y&end){
m[x--][y] = // 填充左侧
}else if(x==start){ // 如果外圈填充完毕
s--; // 接下来填充的数字放到下一的内圈里(抵消循环的s++)
start++; // 左上角边界向内收缩 1
end = --n; // 右下角边界向内收缩 1
i = // 按边界的位置开始填充内圈(行下标)
j = // 按边界的位置开始填充内圈(列下标)
x = // 填充左侧一竖列数字时用的起始位置(行下标)
y = // 填充左侧一竖列数字时用的起始位置(列下标)
count = 0; // 恢复执行程序段的标记
// 返回矩阵
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.print(&输入一个整数:&);
int n = scan.nextInt(); // 输入 n
int[][] m = helix(n); // 矩阵大小为n*n
show(m); // 输出矩阵
}运行结果:输入一个整数:4
12 13 14 5
11 16 15 6
自己写的,用到的控制变量比较多,所以程序读起来容易混乱!
整体思路:&(外圈实现:&
1. 从(左-&右)填充第一行
&2.从(上-&下)填充右侧一列
&3.从(右-&左)填充最后一行&
4.从(下-&上)填充左侧一列
只要最外圈能做出来,内圈同理,调整变量就可以了)
public class Demo08_two {
public static void show(int[][] m) {
for (int[] x : m) {
for (int y : x) {
System.out.print(y + &\t&);
System.out.println(&&);
public static void helix(int n, int b, int[][] a) {
for (i = 0; i & n / 2; i++) {
for (j = j & n - j++)
/* 四个循环按不同的方向进行 */
a[i][j] = ++b;
for (k = i + 1, j--; k & n - k++)
a[k][j] = ++b;
for (j = --k, j--; j &= j--)
a[k][j] = ++b;
for (k--; k & k--)
a[k][i] = ++b;
if (n % 2 != 0) /* 如果是单数的话,要加上最大的那个数放在中间 */
a[i][i] = ++b;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i, j, k, n, b = 0;
System.out.print(&输入一个整数:&);
n = scan.nextInt();
int[][] a = new int[n][n];
helix(n, b, a);
}运行结果:输入一个整数:4
12 13 14 5
11 16 15 6
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:605137次
积分:9728
积分:9728
排名:第941名
原创:349篇
转载:92篇
译文:13篇
评论:178条
(5)(4)(2)(5)(7)(5)(17)(15)(14)(1)(5)(9)(8)(10)(10)(10)(3)(29)(7)(6)(5)(1)(3)(2)(13)(11)(1)(13)(16)(84)(19)(16)(4)(1)(20)(75)这是个机器人猖狂的时代,请输一下验证码,证明咱是正常人~1*2*3/1+2*3*4/1+...+9*10*11/1怎样简算?急!!!!_百度知道
1*2*3/1+2*3*4/1+...+9*10*11/1怎样简算?急!!!!
1------ + -----+···+ -------等于多少!!。急!?要简算
为您推荐:
其他2条回答
2又280分只251么?
2又280分只251么?原式=(1/1)*[1/(2*3)]+(1/2)*[1/()3*4]+......+(1/9)[1/(10*11)]=(1/1)*(1/2-1/3)+(1/2)*(1/3-1/4)+......+(1/9)(1/10-1/11)=1/(1*2)-1/(1*3)+1/(2*3)-1/(2*4)+......+1/(9*10)-1/(9*11)=[1/(1*2)+1/(2*3)+......+1/(9*10)]-[1/(1*3)+1/(2*4)+......+1/(9*11)]=(1-1/2+1/2-1/3+......1/9-1/10)-(1/2)*[2/(1*3)+2/(2*4)+......+2/(9*11)]=1-1/10-(1/2)*[1-1/3+1/2-1/4+1/3-1/5+1/4-1/6+......+1/8-1/10+1/9-1/11]=1-1/10-(1/2)*(1+1/2-1/10-1/11)=1-1/10-1/2-1/4+1/20+1/22=27/110
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁根据1*2+2*3+3*4=1/3*3*4*5=20,计算下题1*2+2*3+3*4+……+10*11(写出过程)根据1*2+2*3+3*4=1/3*3*4*5=20,计算1*2+2*3+3*4+……+n(n+1)=?
计算1*2*3+2*3*4+3*4*5+……+7*8*9=?_百度作业帮
根据1*2+2*3+3*4=1/3*3*4*5=20,计算下题1*2+2*3+3*4+……+10*11(写出过程)根据1*2+2*3+3*4=1/3*3*4*5=20,计算1*2+2*3+3*4+……+n(n+1)=?
计算1*2*3+2*3*4+3*4*5+……+7*8*9=?
根据1*2+2*3+3*4=1/3*3*4*5=20,计算下题1*2+2*3+3*4+……+10*11(写出过程)根据1*2+2*3+3*4=1/3*3*4*5=20,计算1*2+2*3+3*4+……+n(n+1)=?
计算1*2*3+2*3*4+3*4*5+……+7*8*9=?
1*2+2*3+3*4+……+10*11=1/3*[1*2*(3-0)+2*3*(4-1)+3*4*(5-2)+.+10*11*(12-9)]=1/3*[1*2*3-0*1*2+2*3*4-1*2*3+3*4*5-2*3*4+.+10*11*12-9*10*11]=1/3*10*11*12 (内部全部抵消)=440
根据1*2+2*3+3*4=1/3*3*4*5=20计算1*2+2*3+3*4+……+n(n+1)=?
1*2+2*3+3*4+……+n(n+1)
=1/3*n(n+1)(n+2)
根据1*2+2*3+3*4=1/3*3*4*5=20算1*2*3+2*3*4+3*4*5+……+7*8*9=?
1*2*3+2*3*4+3*4*5+……+7*8*9
=1/4*7*8*9*10
1*2+2*3+3*4+……+10*11=1/3*10*11*12=440
4401*2+2*3+3*4+……+n(n+1)=1/3*n(n+1)(n+2)1*2*3+2*3*4+3*4*5+……+7*8*9=1/4*7*8*9*10=1260
1*2+2*3+3*4+4*5+5*6+6*7+7*8+……+98*99+99*100 =1*2+(2*3+3*4)+(4*5+5*6)+(6*7+7*8)+……+(98*99+99*100) =2*1²+2*3²+2*5²+2*7²+2*9²+……+2*99² =2*(1^2+3^2+5^2……+99^2)
1*2+2*3+3*4+.......+(n-1)*n= 1*1 + 1 + 2*2 + 2 + 3*3 + 3 + …… + (N-1)*(N-1) + (N-1)= 1² + 2² + 3² + …… + (N - 1)² + [1 + 2 + 3 + …… + (N - 1) ]运用连续平方和公式、等差数列求和公式