分析:
package 实习面试笔试题.今日;
import java.util.Scanner;
public class Main2_01背包和完全背包混合 {
//01背包和完全背包组合
//给定货币组合,有些货币可以取一次,有些货币可以取多次
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
int count=sc.nextInt();
int [] nums=new int[n+m];
//普通币
for(int i=0;i<n;i++){
nums[i]=sc.nextInt();
}
//纪念币
for(int j=n;j<n+m;j++){
nums[j]=sc.nextInt();
}
int [] dp=new int[count+1];
//初始化,因为0的金额只有一种
dp[0]=1;
for(int i=0;i<n+m;i++){
if(i<n){
//普通货币,完全背包
for(int j=1;j<=count;j++){
if(j>=nums[i]){
//因为是求组合总数
dp[j]=dp[j]+dp[j-nums[i]];
}
}
}else if(i<n+m){
//纪念币,01背包
for(int j=count;j>=1;j--){
if(j>=nums[i]){
dp[j]=dp[j]+dp[j-nums[i]];
}
}
}
}
System.out.println(dp[count]%1000000007);
}
}