标签:blog io sp for on 2014 log amp ef
/* 题意:给你一列只能取0和1的数。 限制:每3个相邻的数的值固定,开头和结尾只限制两个数 求:有多少种组合方案 解:搜索,在开头和结尾再加一个只能取零的数,直接判断是否符合条件即可 */ #include<stdio.h> #include<string.h> #include<stdlib.h> using namespace std; #define N 11000 int sum; int dp[N]; int a[N],n; void dfs(int i) { if(i==2) { if(dp[i]-dp[i-2]!=a[i-1]) return ; } if(i>2) { if(dp[i]-dp[i-3]!=a[i-1]) return ; } if(i==n+1) { sum++; return ; } if(i==n) { dp[i+1]=dp[i]; dfs(i+1); } else { dp[i+1]=dp[i]; dfs(i+1); dp[i+1]=dp[i]+1; dfs(i+1); } return ; } int main() { int i; while(scanf("%d",&n)!=EOF) { for(i=1;i<=n;i++) scanf("%d",&a[i]); if(n==1) { printf("%d\n",a[1]); continue; } sum=0; dp[0]=0; dp[1]=0; dfs(1); // printf("%d\n",sum); dp[1]=1; dfs(1); printf("%d\n",sum); } return 0;}
标签:blog io sp for on 2014 log amp ef
原文地址:http://blog.csdn.net/u011483306/article/details/41044225