zoukankan      html  css  js  c++  java
  • 求不相邻金币相加和的最大值--动态规划1

        求不相邻金币相加和的最大值。

      输入n个金币的金币面值(正数自定义),求这些金币不相邻和的最大值。

    动态规划问题1

     设f(n)为第n个金币数的最大值,f(0)=0,f(1)=a[1],输入的数组从下标为1开始。

    f(n)=max{a[n]+f(n-2),f(n-1)}。

    代码如下:

    import java.util.Scanner;
    public class Jin_bi_zui_da_zhi {
    public static void main(String[] args) {
      Scanner sc=new Scanner(System.in);
      System.out.print("输入金币个数n:");
      int n=sc.nextInt();
      int a[]=new int[n+1];
      System.out.print("输入n个数:");
      for(int i=1;i<=n;++i)
          a[i]=sc.nextInt();
      sc.close();
      int max=hui(a,n);
      System.out.println("不相邻相加最大值是:"+max);
    };
    public static int hui(int[] a,int index){
        int n=a.length;
        int[] f=new int[n];
        f[0]=0;
        f[1]=a[1];
        for(int i=2;i<=index;++i)
        {
            int m=a[i]+f[i-2];
            int max=m>f[i-1]?m:f[i-1];
            f[i]=max;
        }
        return f[index];
    };
    }
  • 相关阅读:
    P1744 采购特价商品
    P1359 租用游艇
    P3092 [USACO13NOV]没有找零No Change
    P1272 重建道路
    P2014 选课
    P1026 统计单词个数
    P1776 宝物筛选_NOI导刊2010提高(02)
    自定义异步非阻塞tornado框架
    tornado进阶篇
    tornado基础篇
  • 原文地址:https://www.cnblogs.com/duange/p/6021132.html
Copyright © 2011-2022 走看看