解题思路:
挺简单的,模拟过程
注意事项:
注意if语句的判断
参考代码:
#include <bits/stdc++.h> using namespace std; string a,b; int n; int flag,res; int main(){ cin>>n; while(n--){ cin>>a; cin>>b; flag=0; res=0; int la = a.length(); for(int i=1;i<la;i++){ //知题意,只有存在子串 101 或者 010才可以翻转,如果第一个不一样,绝对不正确 if(a[i-1]!=b[i-1]){ //不一样则打上输出-1的标记 flag = 1; break; } //判断是否相等 if(a[i]!=b[i]){ //然后再判断是否101或者010 if((b[i-1]=='1'&&b[i]=='0'&&b[i+1]=='1')||(b[i-1]=='0'&&b[i]=='1'&&b[i+1]=='0')){ //是就翻转 b[i] = a[i]; //翻转次数加1 res++; } } } //以防万一再判断一下全部是不是一样 for(int i=0;i<la;i++){ if(a[i]!=b[i]){ //不一样则打上输出-1的标记 flag=1; } } // if(flag==1){ cout<<"-1"<<endl; } else{ cout<<res<<endl; } } return 0; }
0.0分
9 人评分
1000001111101 1111110000011 这种过不了测试吧。这种是有解的,但你的程序运行的结果是-1。难道是我理解错题意了?
南浔 2023-04-24 09:47:08 |
我觉得你理解错了。这样例不符合一个位置说的值和两边不同情况
python过不了?
bloom 2023-04-11 09:34:16 |
python过不了第一个样例,我试了下算上首尾相连能过全国,估计是样例有问题
calvin3399 2023-05-05 21:10:20 |
我也
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:664 |
打水问题 (C语言代码)浏览:1063 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:517 |
WU-整除问题 (C++代码)浏览:610 |
三角形 (C++代码)递推浏览:755 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:1326 |
最小公倍数 (C语言代码)浏览:1025 |
1012题解浏览:859 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:504 |
蓝桥杯历届试题-翻硬币 (C++代码)浏览:872 |
格斯 2024-03-28 22:30:36 |
题目是说字符和两边不同的时候,可以把中间这个字符变成另一种颜色,两边是不变的