1.题目描述:

The party began, the greasy uncle was playing cards, the fat otaku was eating, and the little beauty was drawing.

Playing cards is an indispensable and irreplaceable activity for parties. In order to be more impartial and prevent magician YHH from cheating when shuffling cards, and give full play to his mind-reading advantages at the same time, psychologist ZH proposed to use a pad to play cards.

However, ZH found that the touch screen of the pad he was assigned was malfunctioning. Every time he clicked a card, this card and all the cards behind it would be selected. As we all know, the effect of choosing a card is equivalent to changing the state of the card, that is, if the card was initially selected, it would become unselected, and if it was unselected, it would become selected. Besides, there is another operation, which is to click on the blank space, so that all the cards will become unselected.

Now ZH needs to select some cards to play, but due to the malfunctioning of the touch screen, he cannot simply choose the cards he wants to choose. Now he has used the blind trick to secretly ask netizens which positions to click to choose the cards he wants, please help him!

Given two 01-strings a and b, which represent the current state of the card and the state required by ZH. 0 represents unselected, and 1 represents selected. Now you are asked to give a plan with the smallest number of tap times.

Input Specification:

There are multiple test cases. The first line of input contains an integer T (1 ≤ T ≤ 10), indicating the number of test cases. For each test case:

The first line contains a string a (1 ≤ ∣a∣ ≤ 105), indicating the current state of the card.

The second line contains a string b (∣b∣=∣a∣), indicating the state required by ZH.

Output Specification:

For each test case, print one line contains the minimum number of integers indicating the position ZH should tap in non-decreasing order.

Please note that number 0 is indicating the blank space, and it's guaranteed that the solution of all the test cases is unique.

Sample Input:

2
10110
10000
110101
000000

结尾无空行

Sample Output:

3 5
0

结尾无空行

Hint:

For the first sample, a is "10110", and b is "10000", then ZH needs first to tap the position 3 (based on 1) to make the state become "10001", and then tap the position 5 to make the state become "10000", so you should tell him 3 and 5.

2.代码展示:

#include<bits/stdc++.h>
using namespace std;
const int MAX=1e5+5;
//用于计算操作数
int cal(string s1,string s2,int c[]){
int count1=0,num=0;
int flag=1;//用于标记状态是否改变
for(int i=0;s1[i];i++){
//如果此时片初始状态和终止状态不同,且卡片初始状态未改变
if((s1[i]!=s2[i])&&flag){
c[num++]=i+1;//存储操作过程
count1++;//统计操作数
flag=0;//改变状态
}
//如果此时片初始状态和终止状态相同,且卡片初始状态改变
else if(!flag&&(s1[i]==s2[i])){
c[num++]=i+1;//存储操作过程
count1++;//统计操作数
flag=1;//改变状态
}
}
return count1;
}
int main(){
int T;//T为测试用例的数量
cin>>T;
while(T--){
string s1,s2,s3;
int a[MAX],b[MAX];
cin>>s1>>s2;
s3=s1;
int count1=0,count2=0;
//1.按清零操作
for(int i=0;s1[i];i++)s1[i]='0';//将卡片初始状态全部清零
count1++;//操作数加1
count1=cal(s1,s2,a);//进行操作数的计算
//2.不按清零操作
count2=cal(s3,s2,b);//进行操作数的计算 //进行操作数的计算
//比较清零与不清零的操作数,看看谁是最小值
if(count1<count2){
cout<<"0";
for(int i=0;i<count1;i++)cout<<" "<<a[i];
}else {
for(int i=0;i<count2;i++){
if(i==count2-1)cout<<b[i];
else cout<<b[i]<<" ";
}
}
cout<<endl;
}
return 0;
}

原题链接:PTA | 程序设计类实验辅助教学平台

7-2 Broken Pad (20 分)的更多相关文章

  1. 【PAT甲级】1084 Broken Keyboard (20 分)

    题意: 输入两行字符串,输出第一行有而第二行没有的字符(对大小写不敏感且全部以大写输出). AAAAAccepted code: #define HAVE_STRUCT_TIMESPEC #inclu ...

  2. 1084 Broken Keyboard (20 分)

    1084 Broken Keyboard (20 分) On a broken keyboard, some of the keys are worn out. So when you type so ...

  3. pat 1084 Broken Keyboard(20 分)

    1084 Broken Keyboard(20 分) On a broken keyboard, some of the keys are worn out. So when you type som ...

  4. 1112 Stucked Keyboard (20 分)

    1112 Stucked Keyboard (20 分) On a broken keyboard, some of the keys are always stucked. So when you ...

  5. 【刷题-PAT】A1112 Stucked Keyboard (20 分)

    1112 Stucked Keyboard (20 分) On a broken keyboard, some of the keys are always stucked. So when you ...

  6. 抛弃EF,20分构建一个属于自己的ORM框架

    Poiuyt_cyc 博客园首页新随笔联系订阅管理随笔 - 11  文章 - 0  评论 - 111 抛弃EF,20分构建一个属于自己的ORM框架 相信EF大家都不陌生了,因为数据库表跟程序实体是一一 ...

  7. PTA 邻接表存储图的广度优先遍历(20 分)

    6-2 邻接表存储图的广度优先遍历(20 分) 试实现邻接表存储图的广度优先遍历. 函数接口定义: void BFS ( LGraph Graph, Vertex S, void (*Visit)(V ...

  8. #020PAT 没整明白的题L1-009 N个数求和 (20 分)

    后面的测试点过不去,两个错误一个超时. 目前未解决   L1-009 N个数求和 (20 分)   本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和 ...

  9. L1-023 输出GPLT (20 分)

    L1-023 输出GPLT (20 分) 给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符.当然,四种字符(不区 ...

  10. PAT 乙级 1074 宇宙无敌加法器 (20 分)

    1074 宇宙无敌加法器 (20 分) 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每 ...

随机推荐

  1. 与NewBing一起写作:《Web应用安全入门》

    前言 本文内容基于我的<Web应用安全入门>公开课视频. Prompt:下面是一篇课程音频转录后的文本,请把它转成老师和学生对话形式的文本,要求遵循原文结构,语言衔接流畅,保持 Markd ...

  2. Android笔记--案例:登录界面以及登录逻辑

    登录界面的实现 就是说,界面的绘制,并没有什么难度,只要控制好空间的分配就可以了 登录的逻辑实现 获取验证码.忘记密码的界面跳转.登录的实现: 确认文本框的输入内容是否符合题意:

  3. ElasticSearch 实现分词全文检索 - id、ids、prefix、fuzzy、wildcard、range、regexp 查询

    目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...

  4. Golang 实现 RTP

    在 Coding 之前我们先来简单介绍一下 RTP(Real-time Transport Protocol), 正如它的名字所说,用于互联网的实时传输协议,通过 IP 网络传输音频和视频的网络协议. ...

  5. MyBatis缓存机制[NO]

    前言 MyBatis是常见的Java数据库访问层框架.在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之处,在使用中容易引起脏数据,形成一些潜在 ...

  6. PHP微信三方平台-序章

    一 微信三方平台准备工作 参数说明: 1.登录授权的发起页域名:提供登录授权公众号的域名地址主开发地址 2.测试公众号列表:未全网发布之前只能添加测试公众号 3.授权事件后的接收URL: 这个地址只要 ...

  7. 15.AQS的今生,构建出JUC的基础

    大家好,我是王有志,欢迎和我聊技术,聊漂泊在外的生活.快来加入我们的Java提桶跑路群:共同富裕的Java人. <AQS的前世,从1990年的论文说起>中我们已经对AQS做了简单的介绍,并 ...

  8. 全网最详细中英文ChatGPT-GPT-4示例文档-复杂函数快速转单行函数从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

    目录 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node.js接口请求示 ...

  9. Docker容器内不能联网的6种解决方案

    Docker容器内不能联网的6种解决方案 注:下面的方法是在容器内能ping通公网IP的解决方案,如果连公网IP都ping不通,那主机可能也上不了网(尝试ping 8.8.8.8) 1.使用–net: ...

  10. 列表、sort、reverse、元组、字典、

    1.列表是一种有序可变的容器.通过[]来标识 1)定义一个空列表list = [] 2.列表的添加 1)末尾添加append() list = ['张三',,'王五'] list.append('刘六 ...