您的位置:首页 > 其它

2017百度之星初赛(B)-1001Chess

2017-08-13 20:38 253 查看
hdu--6114

题意:n行m列的矩阵,里面尽可能的放最多的车,并且使得,车不相互攻击(不同在一行或一列),同时要满足,行数大的,列数也要大。

思路:由于尽可能放最多的车。假设n大于m那么最多可以放m辆车,那么就从n中选m列出来放好车就行。所以答案是C(n,m);

主要是保存一波C(n,m)的打表模板。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#define LL long long
#define siz 100005
#include <vector>
#include <queue>

using namespace std;
int n,m;
int C[1005][1005];
int xp[1005][1005];
const int mod = 1e9+7;

void get_C(int maxn)
{
C[0][0] = 1;
for(int i=1;i<=1000;i++)
{
C[i][0] = 1;
for(int j=1;j<=i;j++)
C[i][j] = (C[i-1][j]+C[i-1][j-1])%mod;
}
}
int main()
{
int T;
//getgp();
get_C(1000);
scanf("%d",&T);

while(T--){
scanf("%d%d",&n,&m);
if(n<m){
swap(n,m);
}
printf("%d\n",C
[m]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: