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

设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);    
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值