程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> uva 11127 - Triple-Free Binary Strings(回溯)

uva 11127 - Triple-Free Binary Strings(回溯)

編輯:C++入門知識

題目鏈接:uva 11127 - Triple-Free Binary Strings


題目大意:給出一個串,有0,1,*,然後*的位置可以填0或1,問組成的串中不存在連續三個子串相同的串的個數。


解題思路:遞歸求解,可以剪枝對與當前位置,如果前面的構成已經有存在連續的三個子串相同,可以直接return。


#include 
#include 

const int N = 50;
int n;
char tmp[N];

bool judge(int s, int d) {
	int t = (1<>d;
	int b = s & t;
	s = s>>d;
	int c = s & t;
	return a == b && b == c;
}

int dfs(int s, int d) {
	int k = d / 3, t = n-d-1;
	for (int i = 1; i <= k; i++) {
		if (judge(s>>(t+1), i)) return 0;
	}

	if (d == n) {
		return 1;
	} else if (tmp[d] == '0') {
		return dfs(s, d + 1);	
	} else if (tmp[d] == '1') {
		return dfs(s+(1<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved