LCP 22. 黑白方格画C++解答
使用C++进行解答,虽然是简单难度的题,但自己做的时候也忽略了一些可能性,特此记录一下
当然在代码规范和代码效率上和题解上的大佬们比不了
下面是 代码
。
class Solution {
public:
int jiecheng(int a){
if(a==0)
return 1;
else
return a*jiecheng(a-1);
}
int paintingPlan(int n, int k) {
int ret=0;
if(n*n==k)
ret=1;
for(int i=0;i<=n-1;++i)
for(int j=0;j<=n-1;++j){
if((i+j)*n-i*j==k){
ret=ret+(jiecheng(n)*jiecheng(n)/jiecheng(n-i)/jiecheng(n-j)/jiecheng(i)/jiecheng(j));
}
}
return ret;
}
};
首先使用递归写了一个求阶乘的函数(函数命名比较low哈哈)
然后遍历所有满足要求的行数和列数,并且计算组合数,进行累加。
当n^2=k时是特殊情况,要单独判断,若要加在循环里则可能多次满足判定条件。