简单的组合计数,算是DP吧。很简单的,分“上一位数是0”和“上一位数不是0”讨论即可。同时注意到第1位不能是0。
以下是我的代码:
#include<iostream>
using namespace std;
long n,k;
long dp(long i,long j)
{
if(i==1) return (k-1)*dp(i+1,1);
if(i==n)
{
if(j) return k;
else return (k-1);
}
if(j) return (k-1)*dp(i+1,1)+dp(i+1,0);
else return (k-1)*dp(i+1,1);
}
int main()
{
/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
//*/
cin>>n>>k;
cout<<dp(1,1)<<endl;
return 0;
}
posted on 2010-07-09 15:40
lee1r 阅读(312)
评论(1) 编辑 收藏 引用 所属分类:
题目分类:数学/数论