精华内容
下载资源
问答
  • 在操作数组的时候很多的时候都是横向和竖向遍历一个二维数组,这样的操作比较基础就不说了,但在二维数组的倾斜的遍历的方法上是多样的,这里介绍一个比较好的方法。这里是 int[][] a = new int[9][9]; int[][]...

      在操作数组的时候很多的时候都是横向和竖向遍历一个二维数组,这样的操作比较基础就不说了,但在二维数组的倾斜的遍历的方法上是多样的,这里介绍一个比较好的方法。这里是 int[][] a = new int[9][9];

     
    int[][] a = new int[9][9];
    for(int i=0;i<9;i++)
    {
    for(int j=0;j<9;j++)
    {
    a[i][j] = i;//数组赋值
    }
    }
    for(int i=0;i<9;i++)
    {
    for(int j=0;j<9;j++)
    {
    System.out.print(a[i][j]);//输出数组
    }
    System.out.println();
    }
    结果是:
    000000000
    111111111
    222222222
    333333333
    444444444
    555555555
    666666666
    777777777
    888888888
     
    倾斜遍历:
    for(int i=0;i<17;i++)
    {
    for(int j=0;j<9;j++)
    {
    if(((i-j)>=0)&&((i-j)<9))//每次倾斜的数组的下标相加的结果是一样的
    {
    System.out.print(a[j][i-j]+" ");
    }
    }
    System.out.println();
    }
    System.out.println("*******************************************");
    for(int i=-8;i<9;i++)
    {
    for(int j=0;j<9;j++)
    {
    if(((i+j)>=0)&&((i+j)<9))/每次倾斜的数组的下标相减的结果是一样的
    {
    System.out.print(a[j][i+j]+" ");
    }
    }
    System.out.println();
    }
     
    }
    结果是:
    0 1 
    0 1 2 
    0 1 2 3 
    0 1 2 3 4 
    0 1 2 3 4 5 
    0 1 2 3 4 5 6 
    0 1 2 3 4 5 6 7 
    0 1 2 3 4 5 6 7 8 
    1 2 3 4 5 6 7 8 
    2 3 4 5 6 7 8 
    3 4 5 6 7 8 
    4 5 6 7 8 
    5 6 7 8 
    6 7 8 
    7 8 
    *******************************************
    7 8 
    6 7 8 
    5 6 7 8 
    4 5 6 7 8 
    3 4 5 6 7 8 
    2 3 4 5 6 7 8 
    1 2 3 4 5 6 7 8 
    0 1 2 3 4 5 6 7 8 
    0 1 2 3 4 5 6 7 
    0 1 2 3 4 5 6 
    0 1 2 3 4 5 
    0 1 2 3 4 
    0 1 2 3 
    0 1 2 
    0 1 

    转载于:https://www.cnblogs.com/kong0it/p/3177010.html

    展开全文
  • 二维数组倾斜遍历

    2018-09-29 00:24:31
    如图对二维数组进行上图遍历 package test; public class text1 { public static void main(String[] args) { int [][]a= { {1,5,9,3,7}, {1,5,9,3,-7}, {1,5,9,3,7}, {1,5,9,3,7}, {1,5,...

     

    如图对二维数组进行上图遍历

    package test;
    
    public class text1 {
    	public static void main(String[] args) {
    		int [][]a= {
    				{1,5,9,3,7},
    				{1,5,9,3,-7},
    				{1,5,9,3,7},
    				{1,5,9,3,7},
    				{1,5,9,3,7},
    				{1,5,9,3,7},
    				{1,5,9,3,7},
    				{1,5,9,3,7},
    				{-1,5,9,3,7}
    		};
    		int m=a.length;
    		int n=a[0].length;
    		int sum=m+n;
    		for(int i=0;i<n;i++) {
    			for(int j=0;j<=i;j++) {
    				System.out.print(a[j][i-j]);
    			}
    		}
    		for(int i=0;i<m-n;i++) {
    			for(int j=1+i,p=4;j<=n+i&&p>=0;j++,p--) {
    				
    					System.out.print(a[j][p]);
    			}
    		}
    		for(int q=0;q<n-1;q++) {
    			for(int i=n-1,j=m-n+1;i>q&&j<m;i--,j++) {
    				System.out.print(a[m-j][i]);
    			}
    		}
    		
    	}
    
    }
    

    首先对千五行五列进行倾斜遍历:

    对中间进行遍历:

    对后部进行遍历:

    展开全文
  • 斜着遍历二维数组

    2019-10-14 15:27:25
    #include #include using namespace std; int main() { vector<vector<int>> ...num++)//num是遍历的次数 { for(i=0;i;i++) { j=num-i; if(j>=0 && j) cout[i][j]; } cout; } return 0; } 测试:
    #include <iostream>
    #include <vector>
    using namespace std;
    int main()
    {
          vector<vector<int>> vec;
          int k,m=5;
          for(int i=0;i<m;i++)
          {//有m行
            vector<int> vv;//注意定义的位置,不能在for循环外
            while(cin>>k)
            { 
               vv.push_back(k);
               if(cin.get()=='\n')
                  break;
            }
            vec.push_back(vv);
          }
          int n = vec[0].size();//列
          //测试用
          /*for(int ii=0;ii<m;ii++)
          {
              for(int jj=0;jj<n;jj++)
                cout<<vec[ii][jj]<<" ";
                cout<<endl;
          }*/
          int i,j;//遍历时的行和列
          for(int num = 0;num<m+n-1;num++)//num是遍历的次数
           {
                for(i=0;i<m;i++)
            {
                 j=num-i;
                 if(j>=0 && j<n)
                   cout<<vec[i][j]<<" ";
            }
            cout<<endl;
           }
        return 0;
    }
    
    

    测试:
    在这里插入图片描述

    展开全文
  • #include using namespace std; int main(){ int m cin >> m; while (1) { char input[105][105]; for (int i = 0; i for (int j = 0; j cin >> input[i][j]; } } int x = 0, y = 0, flag = 0;...for (i

    #include <iostream>

    using namespace std;

    int main(){

    int m
    cin >> m;
    while (1) {
    char input[105][105];
    for (int i = 0; i<m; i++) {
    for (int j = 0; j<m; j++) {
    cin >> input[i][j];
    }
    }
    int x = 0, y = 0, flag = 0;
    for (int i = 0; i < 2 * m - 1;i++) {
    if (i <m) {
    if (flag==0) {
    for (int k = i; k >= 0; k--) {
    cout << input[k][i - k];
    }
    flag = 1;
    }else {
    for (int k = 0; k <i + 1;k++) {
    cout << input[k][i - k];
    }
    flag = 0;
    }
    }
    else {
    if (flag==0) {
    x = m - 1;
    for (int k = 0; k < 2 * m - 1 - i; k++) {
    cout << input[x][i - x];
    x--;
    }
    flag = 1;
    }
    else {
    y = m - 1;
    for (int k = 0; k < 2 * m - 1 - i; k++) {
    cout << input[i-y][y];
    y
    --;
    }
    flag = 0;
    }
    }
    }


    cin >> m;


    }

    return 0;

    }


    展开全文
  • 二维数组的倾斜遍历

    千次阅读 2015-01-22 23:13:05
    倾斜遍历: for(int i=0;i< max*2-1 ;i++) {  for(int j=0;j< max ;j++)  {  if(((i-j)>=0)&&((i-j)< max ))  {  System.out.print(a[j][i-j]+" ");  }  }  System.out....
  • 动态规划中有的题往往需要对dp数组斜着遍历,例如dp[ i ][ j ]的值主要由dp[ i ][ j-1 ]和dp[ i+1 ][ j ]两个值的大小决定,即向右上斜着遍历。 n = len(dp] for l in range(2, n+1): for i in range(0, n -l + 1):...
  • 本文参考书P113页代码,实现了右上和右下倾斜遍历二维数组,即: 代码 import static java.lang.System.out; public class Helloworld { public static void main(String[] args){ int n = 5; // 定义一个5*5...
  • /** 程序名称:二维数组横竖倾斜遍历 */ class array8 { public static void main(String[] args) { int[][] a = new int[9][9]; for(int i = 0; i < 9; i++) { for(...
  • js遍历任意形状二维数组,我完全是找规律用大量循环完成遍历,这里的二维数组指完整矩形,不包含内部子数组长度不一致情况。 定义二维数组 ,数组中子数组长度设为x,外面大数组长度为y let arr = [ [1, 2, 3, 4, 5,...
  • 给定二维数组,斜着打印出来 1,2,3,4​ ...第二种方法,根据规律,斜着遍历的行,坐标和固定,时间复杂度O(n),空间复杂度O(1) 代码 package com.qunar.flight.userproduct.athena.supercell.core.web.cont
  • 为什么动态规划遍历 dp 数组的方式五花八门,有的正着遍历,有的倒着遍历,有的斜着遍历。 1. 最优子结构 首先必须要明确一个问题:「最优子结构」是某些问题的一种特定性质,并不是动态规划问题专有的。 ...
  • LeetCode-对角线遍历二维数组 刷了一道题,是关于二维数组的,我这是第一次做二维数组的题目,因为对二维数组的不熟悉导致思路比较乱,中途甚至想要放弃,直接找题解,最终花了好长时间才做出来.虽然效率比较低,但是我...
  • 算法输出顺序如下图(长宽不固定): 程序输出效果如右图(30为进循环次数,统计用): 先上代码 package learn; public class XieXian { ... //遍历次数 int[][] a= { {9,5,1,2,4,4},...
  • 广度优先搜索遍历又名BFS,属于盲目搜寻法,是图的搜索算法之一,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。下面列出几道经典...
  • 【LeetCode】对角线遍历 (数组) 题目: 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。 示例: 输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8...
  • 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3个目标文件 第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第...
  • 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。 示例 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 输出: [1,2,4,7,5,3,6,8,9] 思路 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,617
精华内容 3,046
关键字:

数组斜着遍历