竞赛
考级
法兰西玫瑰
#include<iostream> using namespace std; int main(){ long long a;//存储有几个格子 long long f[50];//存储1~50个格子的涂法 cin>>a;//输入有几个格子 f[0]=0,f[1]=0,f[2]=6;//递推边界 for(int i=3;i<=a;i++){ f[i]=f[i-1]+2*f[i-2];//递推式 } cout<<f[a];//这个嘛~懂的都懂 return 0; }
翻肚皮的翻车鱼
XQH0317
#include<bits/stdc++.h> #define ll long long using namespace std; ll a[1005]; int main(){ ll n; cin >> n; a[1] = 0; a[2] = 6; for(ll i = 3;i <= n;i++) a[i] = a[i-1] + a[i-2] * 2; cout << a[n]; return 0; }
DARK SPECTRE
本题解仅供蒟蒻观看(本文所有颜色由123代表) 先上上代码吧 那么就解释一下公式原因 考虑两种情况 1.第i-1的颜色与第1个的颜色不相同,如123_,那只有2一种填法,根据枚举,可总结出如果第i-1的颜色与第1个的颜色不相同,那第i个数只有一种填法,也就是说每种a[i-1]的填法都能变为一种a[i]的填法。 2.第i-1的颜色与第1个的颜色相同,如121_,那有2,3两种填法,同样根据枚举,可总结出如果.第i-1的颜色与第1个的颜色相同,那第i个数有2种填法,又因为第i-1个数已经被固定,因此共有a[i-2】(前i-2个数的填法)×2(第i个数的填法) 因此,公式为a[i-1]+2×a[i-2]种填法
egogaming
这道题可以用递归算法或递归算法,我只讲递归算法。 代码如下: #include<bits/stdc++.h> using namespace std; int main(){ long long n; long long j[50]; cin>>n; j[0]=0,j[1]=0,j[2]=6; for(int i=3;i<=n;i++){ j[i]=j[i-1]+2*j[i-2]; } cout<<j[n]; } (我知道有的人只看这里,所以放在前面。) "j[0]=0,j[1]=0,j[2]=6;"是递归边界: 因为j[0]=0,j[1]=0,而j[2]=6,不符合递归式“j[i]=j[i-1]+2j[i-2];”。 递归式“j[i]=j[i-1]+2j[i-2];”: 从j[3]开始j的第i个(i>=3)等于j的第i个的上一个加上个的上一个。 (感谢各位看到最后的人!) 完结 散花
*****
我是自愿上学的
#include<iostream> using namespace std; int main(){ int n; cin>>n; long long a[1001]; a[1]=0; a[2]=6; for(int i=3;i<=n;i++){ a[i]=a[i-1]+2*a[i-2]; } cout<<a[n]; return 0; }
Alex
AC君
#include<bits/stdc++.h> using namespace std; int main(){ long long n;//存储格子数量 cin>>n;//输入有几个格子 long long arr[50];}//存储1~50个格子的涂法 arr[0]=0,arr[1]=0,arr[2]=6;//递推边界 for(int i=3;i<=n;i++){ arr[i]=arr[i-1]+2*arr[i-2];//递推式 } cout<<arr[n];//输出 return 0; }
涅槃火凤(肖子益)
编程的ikun
#import<iostream> using namespace std; long long a[114514]; int main(){ int n; cin>>n; a[1]=0; a[2]=6; for(int i=3;i<=n;i++){ a[i]=a[i-1]+2*a[i-2]; } cout<<a[n]; return 0; }
159****1573
135****2872
正在减肥的吃货
zhouty
#include <bits/stdc++.h> using namespace std; long long nw(int m) { if(m0) return 0; if(m1) return 0; if(m2) return 6; if(m3) return 6; if(m4) return 18; if(m5) return 30; if(m6) return 66; if(m7) return 126; if(m8) return 258; if(m9) return 510; if(m10) return 1026; if(m11) return 2046; if(m12) return 4098; if(m13) return 8190; if(m14) return 16386; if(m15) return 32766; if(m16) return 65538; if(m17) return 131070; if(m18) return 262146; if(m19) return 524286; if(m20) return 1048578; if(m21) return 2097150; if(m22) return 4194306; if(m23) return 8388606; if(m24) return 16777218; if(m25) return 33554430; if(m26) return 67108866; if(m27) return 134217726; if(m28) return 268435458; if(m29) return 536870910; if(m==30) return 1073741826; return nw(m-1)+2*nw(m-2); } int main(){ int n; cin>>n; cout<<nw(n)<<endl; return 0; }
Voldemort
哒烧叶