阿里 3.17 笔试
1、第一题:
n副扑克,张数为m,大小为1~m,每幅扑克抽一张,求和恰好为k的组合数,结果对10e9+7取余数。
剑指offer:骰子点数
n副扑克,张数为m,大小为1~m,每幅扑克抽一张,求和恰好为k的组合数,结果对10e9+7取余数。
剑指offer:骰子点数
代码:
#include<iostream>
#include<vector>
using namespace std;
int main(){
int mod=1000000007;
int t;
cin>>t;
while(t--){
int n,m,k;
cin>>n>>m>>k;
vector<vector<long> > dp(n+1,vector<long>(n*m+1,0));
for(int i=1;i<=m;i++){
dp[1][i]=1;
}
for(int i=1;i<=n;i++){
for(int j=i;j<=i*m;j++){
for(int k=1;k<=m;k++){
if(j-k<=0){
break;
}
dp[i][j]+=dp[i-1][j-k];
}
}
}
int ret=dp[n][k]%mod;
cout<<ret<<endl;
}
return 0;
} 2、第二题 

安克创新 Anker公司福利 800人发布