首页 > 其他分享 >杨辉三角的问题,借助二维数组的方法来解决。

杨辉三角的问题,借助二维数组的方法来解决。

时间:2023-12-26 19:55:19浏览次数:32  
标签:int length ++ 二维 循环 数组 杨辉三角 我们

 1 public class code1 {
 2     public static void main(String[]args) {
 3         int[][] x = new int[6][6];
 4         for (int i = 0; i < x.length; i++) {
 5             x[i][0] = 1;
 6             x[i][i] = 1;
 7 
 8         }
 9         for (int i = 2; i < x.length; i++) {
10             for (int j = 1; j < i; j++) {
11                 x[i][j] = x[i - 1][j - 1] + x[i - 1][j];
12             }
13 
14         }
15 
16 
17         for (int i = 0; i < x.length; i++) {
18             for (int j = 0; j < i + 1; j++) {
19                 System.out.printf("%-3d",x[i][j]);
20             }
21             System.out.println();
22         }

 

题目:杨辉三角的变形,由原来的等腰三角形变成直角三角形,但规律还是没有发生改变,所以我们还是按照原来的题目做。

根据题目分析发现三角形的第一列和每一行的最后一个都是数值1,那我们根据这个使用循环来把这些地方的值赋值为1;

 for (int i = 0; i < x.length; i++) {
          x[i][0] = 1;
              x[i][i] = 1;
第二个那就是除了刚才的那些地方,其他的位置我们要赋值,根据规律,借用循环来完成。用i来表示行数,用J来表示每一行的下标,也可以了解为例数。
之所以i是从2开始的是因为前面俩行是一个只有一个数,还有一个是只有2个数,根据题意知,他们都是1,那也就是说他们不参与我们这个数的计算所以我们从2开始循环。
而i是每一行的下标,因为前面的每一行的首个和最后一个是1,那么我们就可以不要把这些数进行计算。
for (int i = 2; i < x.length; i++) {
             for (int j = 1; j < i; j++) {
                x[i][j] = x[i - 1][j - 1] + x[i - 1][j];(这行代码就是杨辉三角数与数之间的关系)
           }
最后我们已经把这个二维数组已经搞好了,那接下来我们应该把它们给输出来,同样也是借助循环来输出,这里不能借助foreach来,因为这个输出的格式有要求,所以我们输出格式化。
 for (int i = 0; i < x.length; i++) {
           for (int j = 0; j < i + 1; j++) {
                System.out.printf("%-3d",x[i][j]);
}
第二个循环为什么要加一呢,我们来看,在第一个循环中i是从0到5,也就是有6行,如果J小于i的话 ,那我们的J的取值范围就是0到4,i是能取到5,但,J是不能取到的,因为是小于不能等于,
所以我们在i的基础上加上1,就可以了。
这是我关于这道题的想法。


标签:int,length,++,二维,循环,数组,杨辉三角,我们
From: https://www.cnblogs.com/jianchiziji/p/17928737.html

相关文章

  • NDK-以十六进制字符串的形式打印char[]数组到logcat
    NDK-以十六进制字符串的形式打印char[]数组到logcat1.在Java中打印publicstaticStringconvertByteArr2String(byte[]bArr){StringBuilderbuilder=newStringBuilder();for(inti=0;i<bArr.length;i++){builder.append(String.format(Locale......
  • C#深度理解:数组、集合、哈希、字典、堆、栈 优缺点
    一、数组1、Array固定数组优点:1).快速访问:数组通过索引来访问元素,访问速度非常快,因为可以通过索引进行直接定位。2).内存连续存储:数组在内存中以连续的方式存储元素,这样有助于提高数据的读取和写入效率。3).多维支持:C#中的数组支持多维(二维、三维等)数据结构,可以用于表示......
  • 非动态数组版本下的筛选
    问题:一对多查找(筛选)的结果需要横向排列,但是表格暂时不支持动态数组。右拉下拉公式解决:{=IFERROR(INDEX(FILTER($E:$E,$D:$D=$G2),COLUMN(A1)),"")}公式中的Filter部分筛选出满总D列中等产于G2对应E列的内容,其结果是多个单元格组成的数组。使用Index提取数组中的内容,第二参数用Colum......
  • js 把对象存入数组中
    js把对象存入数组中  varparams=[];varinfo={"张三":"21","李四":"32","王五":"14","小红":"31","小兰":"24",......
  • rabbitmq listener注解@RabbitListener里的queues是个数组,你用了吗?
    靠谱的程序员具有注重实效的偏执,对于重复多行的代码,总会想办法消除重复。我们zhongtai-channel里在调用服务商接口发起签约前,使用了mq进行异步处理。即:zhongtai-channel签约RPCAPI接收到上游的请求后,先同步持久化保存签约请求流水,然后将签约数据放入rabbitmq消息队列,等待程序里的消......
  • 【Cpp 语言基础】vector像数组一样地初始化多个元素
    一般的vector的初始化有两种方式,push_back和(n,val)方式vector<int>vect;//一般方式vect.push_back(10);vect.push_back(20);//Createavectorofsizenwith//allvaluesas10.vector<int>vect(n,10);但是也可以像C语言的数组一样初始化://方式3:直接像数组一......
  • c zero length array 零长度数组
    structuserdata{uint32_tlen;uint8_tdata[0];};在阅读一些开源代码时,比如linuxkernel,会发现上面这种用法,这种叫做零长度数组。有什么作用呢?简单来说为了开发便利,顺便节省空间。使用限制只能放在结构体结尾,也就是一个结构体只能有一个零长度数组。使用场景比......
  • Java 二维数组
    二维数组:二维数组的元素个数=二维数组中一维数组的个数= arr.length;二维数组的每个元素是一维数组,所以如果需要得到每个一维数组中的元素,还需要再遍历一维数组;arr[i][j]表示:二维数组的第 i+1 个一维数组的第 j+1 个元素;二维数组的初始化: 1.静态初始化定......
  • json 数组查找数据的几种方式,包括模糊查找
    来源:http://www.shanhubei.com/archives/3418.html在JavaScript中,有几种常见的方式可以用来查找JSON数组中的数据。下面介绍了其中的几种方式:1.使用find()方法:find()方法用于在数组中查找满足指定条件的第一个元素,并返回该元素。它接受一个回调函数作为参数,该回调函数会......
  • 操作对象数组
    1.将对象数组按照一定的数量进行切割  应用场景:列表前端分页,swiper翻页等  json数据如下:  constarr=[        {"name":"AAA","info":'01'},        {"name":"BBB","info":'02'}, ......