硬币翻转
题目详见:硬币翻转
这道题是一道简单的模拟(其实洛谷标签上说这道题是搜索???),我们只需要每一次从前往后找相同的硬币,直到找到不同的硬币n,然后将找到的前n-1个相同的硬币翻过来,每翻一次让计数器tot+1,直到所有硬币都是正面后输出tot即可。
AC代码:
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<algorithm> using namespace std; int l,tot; char c[10001]; int main() { cin>>c; l=strlen(c); for(int i=l;i>=1;i--) c[i]=c[i-1]; while(1) { for(int i=1;i<=l;i++) { if(c[i]=='0') break; else if(i==l) { cout<<tot; return 0; } } char a=c[1]; for(int i=1;i<=l;i++) { if(a=='0') { if(c[i]==a) c[i]='1'; else break; } else if(a=='1') { if(c[i]==a) c[i]='0'; else break; } } tot++; } cout<<tot; return 0; }