日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蓝桥杯-数字三角形 (java)

發布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯-数字三角形 (java) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
算法訓練 數字三角形 時間限制:1.0s 內存限制:256.0MB問題描述(圖3.1-1)示出了一個數字三角形。 請編一個程序計算從頂至底的某處的一條路徑,使該路徑所經過的數字的總和最大。●每一步可沿左斜線向下或右斜線向下走;●1<三角形行數≤100;●三角形中的數字為整數0,1,…99;.(圖3.1-1)輸入格式文件中首先讀到的是三角形的行數。接下來描述整個三角形輸出格式最大總和(整數)樣例輸入573 88 1 02 7 4 44 5 2 6 5樣例輸出30

解題思路:這里其實主要是運用了動態規劃,剛剛開始做這些題目的時候,自己對動態規劃的思想也是理解的不好,但是做的多了之后,發現了一些規律。很多書上都會提到需要提出一個動態規劃方程,那樣就更好寫程序了,我覺得吧,自己按照自己的理解的方式來也是可以的,不必那么死板。。
這個題目剛剛看到自己想到用樹來解決,深度優先算法來解決,但是想想覺得太麻煩,然后看到題目要求,就是要求最大值,想到要不是左邊的那個,要不是右邊那個值,這樣想想好像就有規律了,比如,我們倒過來想,從n個開始,現在比如輸入n=5;那么a[4][4]的最大值是不是等于本身加上a[5][4] 和 a[5][5]的最大值(當然這樣數組下標是從1開始),接下來,a[3][4] += a[4][4] 和a[4][5]。這樣好像就可以解決了。方程好像不就是a[i-1][j]+= Math.max(a[i][j], a[i][j+1]),這樣就解決了。

package com.sihai.advance;import java.util.Scanner;public class sanjiaoxing{ public static void main(String[]args){Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[][]a = new int[n+1][((1+n)*n)/2+1];for(int i=1 ; i<=n ; i++){for(int j=1 ; j<=i ; j++){a[i][j] = sc.nextInt();}}for(int i=n ; i>=1 ; i--){for(int j=1 ; j<=i-1 ; j++){a[i-1][j]+= Math.max(a[i][j], a[i][j+1]);}}System.out.println(a[1][1]);} }

關于動態規劃的內容可以看一下我的這篇博客

一看就懂的動態規劃入門教程

算法-動態規劃(1)

總結

以上是生活随笔為你收集整理的蓝桥杯-数字三角形 (java)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。