您的位置:首页 > 其它

【扇形涂色问题】某里内推在线笔试,一个圆分成N个扇形,有M中颜色,求领域不同色的所有涂色方案数

2018-03-16 16:05 633 查看
设F(N,M)为满足的所有方案

N=1时,有M种
N=2时,有M*(M-1)种
N=3时,有M*(M-1)*(M-2)种
当N>=4时:
    先考虑所有可以重色的方案:即M*(M-1)*(M-1)*(M-1)
    其中包括第一块和最后一块重色的方案,只要减去即可。把第一块和最后一块作为同一个颜色块考虑的话,问题变为3区域不同色,即F(4,M) = M*(M-1)*(M-1)*(M-1) - F(3,M)。所以方案的递推公式是:



用C实现代码:
#include "stdio.h"
#include "math.h"

double recurve(int n,int m){
double kinds;
if(n==1){
kinds = m;
}
if (n==2){
kinds = m*(m-1);
}
if (n==3){
kinds = m*(m-1)*(m-2);
}
if (n>3){
kinds = m*pow(m-1,n-1) - recurve(n-1,m);
}
return kinds;
}

void main()
{
int n,m;
double kind;
scanf("%d %d",&n,&m);
kind = recurve(n,m);
printf("%f",kind);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  笔试测评
相关文章推荐