题解 | 小红的地砖

小红的地砖

https://www.nowcoder.com/practice/8cd083c66a5f43489a532164e2a2304d



import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		int a[]=new int[n+5];
		for (int i = 1; i <= n; i++) {
			a[i]=scanner.nextInt();
		}
		int dp[]=new int[n+5];
		//0 1 0 2 1 0
		//0 
		dp[1]=a[1];//0
		dp[2]=a[2];//1
		for (int i = 3; i < n+1; i++) {
			dp[i]=Math.min(dp[i-1]+a[i], dp[i-2]+a[i]);
		}
		System.out.println(dp[n]);
		
		
		

	}

}

个人感觉这题和跳楼梯很像,都是跳1级跳2级的情况,那么我们想要求最小值,针对i号,肯定是dp[i]=Math.min(dp[i-1]+a[i], dp[i-2]+a[i]);初始化就直接给前两个赋值就行

全部评论

相关推荐

04-17 18:34
中山大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务