/*
分析:
读完题立刻就想到了搜索,不过感觉有点不对劲,
因为全选与反选的作用太绝对了,所以貌似可以找规律,
于是,下面的我用的方法就诞生了~ -、-I
仔细想想:
(1)全选:要用的话第一次就用,否则就没有意义
了;
(2)反选:对于某个选项,反选前修改它的状态然
后进行反选、和、先反选后修改它的状态,结果一样;
所以,ans是下面4种情况的最小值:
(1)不用全选、也不用反选,直接根据需要点;
(2)先全选,然后根据需要,将一些选项点灭;
(3)先反选,然后根据需要,点;
(4)先全选,然后反选,然后根据需要将选项点亮。
2012-09-06
*/
分析:
读完题立刻就想到了搜索,不过感觉有点不对劲,
因为全选与反选的作用太绝对了,所以貌似可以找规律,
于是,下面的我用的方法就诞生了~ -、-I
仔细想想:
(1)全选:要用的话第一次就用,否则就没有意义
了;
(2)反选:对于某个选项,反选前修改它的状态然
后进行反选、和、先反选后修改它的状态,结果一样;
所以,ans是下面4种情况的最小值:
(1)不用全选、也不用反选,直接根据需要点;
(2)先全选,然后根据需要,将一些选项点灭;
(3)先反选,然后根据需要,点;
(4)先全选,然后反选,然后根据需要将选项点亮。
2012-09-06
*/
#include"stdio.h"
int min(int a,int b)
{return a>b?b:a;
}
int main()
{int y1,y2,y3,y4;int ans;int i;int n;char str1[55],str2[55];while(scanf("%d",&n)!=-1){scanf("%s%s",str1,str2);y1=0;for(i=0;i<n;i++) if(str1[i]!=str2[i]) y1++;//y2=1;for(i=0;i<n;i++) if(str2[i]=='0') y2++;//y3=1;for(i=0;i<n;i++){if(str1[i]=='0') str1[i]='1';else str1[i]='0';}for(i=0;i<n;i++) if(str1[i]!=str2[i]) y3++;//y4=2;for(i=0;i<n;i++) if(str2[i]=='1') y4++;ans=min(min(min(y1,y2),y3),y4);printf("%d\n",ans);}return 0;
}