POJ

xiaoxiao2021-02-28  99

//POJ8469特殊密码锁 #include<cstdio> #include<iostream> #include<cstdlib> #include<algorithm> #include<cstring> using namespace std; char s[110], s1[110], s2[110], model[110]; int main() { int count1 = 1, count2 = 0; cin >> s >> model; memcpy(s1, s, sizeof(s));//s1的0位置被按下 memcpy(s2, s,sizeof(s));//s2的0位置未被按下 s1[0] = !(s1[0] - '0') + '0'; s1[1] = !(s1[1] - '0') + '0'; for(int i = 0; model[i + 1]; i++) { if(s1[i] != model[i]) { s1[i] = !(s1[i] - '0') + '0'; s1[i + 1] = !(s1[i + 1] - '0') + '0'; if(s1[i + 2]) s1[i + 2] = !(s1[i + 2] - '0') + '0'; count1++; } } if(strcmp(s1, model)) count1 = -1; for(int i = 0; model[i + 1]; i++) { if(s2[i] != model[i]) { s2[i] = !(s2[i] - '0') + '0'; s2[i + 1] = !(s2[i + 1] - '0') + '0'; if(s2[i + 2]) s2[i + 2] = !(s2[i + 2] - '0') + '0'; count2++; } } if(strcmp(s2, model)) count2 = -1; if(count1 == -1 && count2 == -1) { printf("impossible\n"); return 0; } if(count1 == -1) printf("%d\n", count2); else if(count2 == -1) printf("%d\n", count1); else printf("%d\n", min(count1, count2)); return 0; }
转载请注明原文地址: https://www.6miu.com/read-50462.html

最新回复(0)