3 条题解
-
2
#include<string> #include<windows.h> #include<bits/stdc++.h> using namespace std; long long n,sum=0; long long ans[100005]; bool ss() { int ss1=0; for(int i=3; i<=n; i++) { if(ans[i]==ans[i-2]) ss1++; else { ss1=0; } if(ss1==2) return 0; } return 1; } void dfs(int x) { if(x==n+1) { if(ss()) sum++; return ; } for(int i=1;i<=3;i++) { ans[x]=i; dfs(x+1); } } int main() { cin>>n; dfs(1); cout<<sum; return 0; }
-
0
#include<bits/stdc++.h> using namespace std; long long n,ans,f,s,a[20]; void dfs(int deep){ if(deep>n){ f=s=0; for(int k=3;k<=deep;k++){ if(a[k]==a[k-2]) s++; else s=0; } if(s<2) ans++; return ; } for(int i=1;i<=3;i++){ a[deep]=i; f=s=0; for(int k=3;k<=deep;k++){ if(a[k]==a[k-2]) s++; else s=0; } if(s<2)dfs(deep+1); } } int main(){ cin>>n; if(n>3) dfs(1); if(n==1) cout<<3; else if(n==2) cout<<9; else if(n==3) cout<<27; else cout<<ans; return 0; }
- 1
信息
- ID
- 140
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 258
- 已通过
- 58
- 上传者