zoukankan      html  css  js  c++  java
  • 动态规划之工作方案

    package test;
    
    import java.util.Scanner;
    
    public class Main0 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
            final int mod = 1000000007;
    		try(Scanner in = new Scanner(System.in)){
    			int s = in.nextInt();
    			int a = in.nextInt();
    			int b = in.nextInt();
    			int c = in.nextInt();
    			int cnt[][][][] = new int[51][51][51][51];
                cnt[0][0][0][0] = 1;
    			for(int i = 1;i <= s; i++) {
    				for(int j = 0;j <= i; j++) {
    					for(int k = 0; k <= i; k++) {
    						for(int l = 0; l <= i; l++) {
    							if(j != 0) cnt[i][j][k][l] = (cnt[i][j][k][l] % mod +  cnt[i-1][j-1][k][l] % mod) % mod;
    							if(k != 0) cnt[i][j][k][l] = (cnt[i][j][k][l] % mod +  cnt[i-1][j][k-1][l] % mod) % mod;
    							if(l != 0) cnt[i][j][k][l] = (cnt[i][j][k][l] % mod +  cnt[i-1][j][k][l-1] % mod) % mod;
    							if(j!=0 && k!=0) cnt[i][j][k][l] = (cnt[i][j][k][l] % mod +  cnt[i-1][j-1][k-1][l] % mod) % mod;
    							if(j!=0 && l!=0) cnt[i][j][k][l] = (cnt[i][j][k][l] % mod + cnt[i-1][j-1][k][l-1] % mod) % mod;
    							if(k!=0 && l!=0) cnt[i][j][k][l] = (cnt[i][j][k][l] % mod +  cnt[i-1][j][k-1][l-1] % mod) % mod;
                                if(j!=0 && k!=0 && l!=0) cnt[i][j][k][l] = (cnt[i][j][k][l] % mod +  cnt[i-1][j-1][k-1][l-1] % mod) % mod;
    						}
    					}
    				}
    			}
    			System.out.println(cnt[s][a][b][c]);
    		}
    	}
    
    }
    

      本题来自牛客网,网易一道算法题。

           参考一位大神的C++算法,改成Java写的。主要思想是动态规划。分析最优子结构可知,当工作量 s+1 时,这个1的工作量必须由后面的3个人做。那么就有2^3 -1 种可能(可以一个人做,可以两个人,可以三个人同时做),所以就有了这么多if语句,当然,不能一个人都不做,所以总共就是2^3 - 1。if判断当中,多个变量时候,任何一个都不能为0,原因是为0相当于没有分给他,这种情况会在之前的if中讨论。最重要的是分析出子结构。然后再dp。

  • 相关阅读:
    个人作业1——四则运算题目生成程序
    软件工程的实践项目课程的自我目标
    个人附加作业
    个人作业3——个人总结(Alpha阶段)
    结对编程2——单元测试
    个人作业二——英语学习APP 案例分析
    结对编程 (201421123002,201421123006,201421123007)
    四则运算
    软件工程的实践项目课程的自我目标
    个人作业3——个人总结(Alpha阶段)
  • 原文地址:https://www.cnblogs.com/theWinter/p/11248585.html
Copyright © 2011-2022 走看看