【Wikioi】1065-01字符串
来源:互联网 发布:hemingway软件 编辑:程序博客网 时间:2024/05/18 02:26
输出仅有0和1组成的长度为n的字符串,并且其中不能含有3个连续的相同子串。
简单的方法是用递推:
#include<stdio.h>int main(){ int n,i; long long a[91]; scanf("%d",&n); a[0]=0; a[1]=2; a[2]=4; for(i=3;i<=n;i++) a[i]=a[i-1]+a[i-2]; printf("%ld",a[n]); return 0;}
DFS方法:
注意如果三个连续相等了就得return;
#include <iostream>using namespace std;int ans=0;int n=5;int A[30];void dfs(int dep){ if(dep>2) { if(A[dep-1]==A[dep-2] && A[dep-2]==A[dep-3]) return; } if(dep==n) { ans++; for(int i=0; i<n; i++) cout<<A[i]<<" "; cout<<endl; } else for(int i=0; i<2; i++) { A[dep]=i; dfs(dep+1); }}int main(){ dfs(0); cout << ans << endl; return 0;}
当然,dfs写成这样也ok:
void dfs(int dep){ if(dep==n) { ans++; for(int i=0; i<n; i++) cout<<A[i]<<" "; cout<<endl; } else for(int i=0; i<2; i++) { if(!(dep>=2 && i==A[dep-1] && i==A[dep-2])) { A[dep]=i; dfs(dep+1); } }}
0 0
- 【Wikioi】1065-01字符串
- wikioi字符串高分水题六道。。。
- 【WikiOI】【P1401】【字符串匹配 】【题解】【KMP】
- wikioi 3031 字符串哗然并匹配查找
- Wikioi 1025 01背包变形
- 【wikioi】1014装箱问题题解(01背包标准)
- wikioi-1742
- wikioi-1038
- wikioi-1204
- wikioi-1205
- wikioi 高精度
- wikioi 2344
- wikioi 选课
- wikioi 1217
- Wikioi 3037
- wikioi 传话
- Wikioi 1000
- Wikioi 1001
- CSS层叠样式表
- 分页技术COUNT STOPKEY和SORT ORDER BY
- instanceof
- Runtime.exec() 的陷阱
- Callable 和 FutureTask 生产者和消费者
- 【Wikioi】1065-01字符串
- Hibernate4学习(2)基于注解配置
- live555源码分析---- PLAY命令的处理
- java中字符串池,String池,共享池到底是怎么回事?
- javascript及基本语法
- SHELL排序
- lua语言基础
- Java中Runtime.getRuntime().exec()错误:Cannot allocate memory!
- hdu 4939 Stupid Tower Defense (dp)