zoukankan      html  css  js  c++  java
  • 【codevs1065】01字符串

    题目大意:输出仅由 0 和 1 组成的长度为 N 的字符串个数,并且其中不能含有 3 个连续的相同子串。

    题解:数据太水,正规解法应该是枚举后缀进行判断。

    代码如下

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn=31;
    
    int n,s[maxn],ans;
    
    void dfs(int cur){
    	if(cur==n+1){
    		++ans;
    		return;
    	}
    	for(int i=0;i<=1;i++){
    		s[cur]=i;
    		bool ok=1;
    		for(int j=1;3*j<=cur;j++){
    			bool flag=1;
    			for(int k=0;k<j;k++)
    				if(s[cur-k]^s[cur-j-k]||s[cur-j-k]^s[cur-2*j-k]||s[cur-k]^s[cur-2*j-k]){
    					flag=0;
    					break;
    				}
    			if(flag){
    				ok=0;
    				break;
    			}
    		}
    		if(ok)dfs(cur+1);
    	}
    }
    
    int main(){
    	scanf("%d",&n);
    	if(!n)return puts("0"),0;
    	dfs(1);
    	printf("%d
    ",ans);
    	return 0;
    }
    
  • 相关阅读:
    python之private variable
    python实例、类方法、静态方法
    python常用option
    access
    FD_CLOEXEC
    fork后父子进程文件描述问题
    split
    信号
    kill
    进程组&Session
  • 原文地址:https://www.cnblogs.com/wzj-xhjbk/p/10083747.html
Copyright © 2011-2022 走看看