poj 3605

来源:互联网 发布:淘宝和卷皮哪个更好 编辑:程序博客网 时间:2024/04/30 19:51

题目很简单,就是给你一个门电路,问开关变化多少次能到达目的状态。

这个题目看起来好像无从下手,但是如果找到一个规律你就能很快解决了。

规律就是只要计算出第一次从输出0-1需要变换开关的次数,其余从0-1,1-0状态只要改变1次开关就能到达。

#include <iostream>using namespace std;int t,n,men[10005],m;char st[10050];int kg(int i){if(i*2+1>=n){if(men[i]==0)return 1;elsereturn 2;}else{if(men[i]==1)return kg(i*2+1)+kg(i*2+2);elsereturn min(kg(i*2+1),kg(i*2+2));}}int main(){int i,j,res,m;scanf("%d",&t);while(t--){scanf("%d",&n);scanf("%s",st);for(i=0;i<n-1;i++)scanf("%d",&men[i]);res=0;m=kg(0);for(i=0;st[i];i++)if(st[i] != '0')break;if(st[i])res += m;i++;for(;st[i];i++)if(st[i-1] != st[i])res ++;printf("%d\n",res);}return 0;}


原创粉丝点击