RGB塗装問題
4411 ワード
説明:
1列に並ぶn個の格子があり、赤(Red)、ピンク(Pink)、緑(Green)の3色で各格子を塗り、各格子に1色塗り、隣接する格子が同色でないことを要求し、しかも首尾両格子も異なる色である.すべての要求を満たす塗り方を求める.以上が有名なRPGの難題である.
Input入力データには複数のテストインスタンスが含まれており、各テストインスタンスが1行を占め、1つの整数Nで構成されている(0 Outputは各テストインスタンスについて、すべての要求を満たす塗布法を出力し、各インスタンスの出力が1行を占めている.
Sample Input
1
2
Sample Output
3
6
分析:どのようなプッシュ問題がいつもそんなにうまくいかないのか分からないし、しかもこの問題はそんなに簡単だ.考え方は簡単で、n+1 n+1 n+1の場合とn n n nおよびn−1 n−1 n−1の関係は2つの場合に分けられる.長さnの列を考慮して、iビットの文字をs[i]s[i]s[i]s[i]で表す.
コード参照:
#include
int main()
{
int n;
while (scanf("%d",&n)!=EOF){
long long z[51]={0,3,6,6};// n=50 , 16 , int, long long
for (int i=4;i<=n;i++)
{
z[i]=z[i-1]+z[i-2]*2;
}
printf("%lld
",z[n]);
}
}