您的位置:首页 > 其它

UVA580 Critical Mass

2013-02-12 14:00 274 查看
假设有n个cube,  那么有f(n)种危险的情况。

从左往右看,讨论前几位的情况:

L              那么有 f(n-1)

UL           那么有 f(n-2)

UUL        那么有 f(n-3)

UUUL     那么有 2^(n-4)

UUUUL  那么有 2^(n-5)

。。。。。。

所以, f(n)=f(n-1)+f(n-2)+f(n-3)+2^(n-4)...+1    (4<=n<=30)

这里的+1是 指全是U的情况。

弱弱地贴出下面的AC代码。

#include <iostream>

using namespace std;

const int maxsize=30;

long long int a[maxsize+5];
long long int two[maxsize+5];

void CalTwo()
{
two[0]=1;
for (int i =1; i<=maxsize-4; i++){
two[i]=two[i-1]<<1;
}
}
void calculate()
{
a[0]=0;
a[1]=0;
a[2]=0;
a[3]=1;
CalTwo();
for (int i = 4; i <= maxsize; i++){
for (int k = 1; k <= i; k++){
if (k <= 3){
a[i]+=a[i-k];
}
else {
a[i]+=two[i-k];
}
}
a[i]+=1;
}
}
int main()
{
int n;
calculate();
while(cin>>n && n!=0){
cout<<a
<<endl;
}
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: