xynuoj +-字符串
来源:互联网 发布:电脑设计软件 编辑:程序博客网 时间:2024/06/05 10:02
问题 F: +-字符串
时间限制: 1 Sec 内存限制: 64 MB[提交][状态][讨论版]
题目描述
Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。
输入
输出
仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。
样例输入
++-+--+ -++--++
样例输出
4
首先先找到对应的位置上的字符不同的位置然后再将数组a向后面找与数组b中该位置上的字符相同的字符(在找的过程中要将找的步数加到min上)也就是需要交换的次数,然后只要找到有相同的就停止,交换就此结束,然后再继续往后遍历,直到遍历的所有对应位置上的字符都相等为止!# include<stdio.h># include<string.h>char a[5005],b[5005];int main(){while(~scanf("%s%s",a,b)){int i,j,c1=strlen(a),c2=strlen(b),a1=0,b1=0;for(i=0;i<c1;i++)if(a[i]=='+') a1++;for(i=0;i<c2;i++)if(b[i]=='+')b1++;int min=0;if(c1==c2&&a1==b1) //观察两个字符串的长度是否相同且‘+ ’个数是否相同; {for(i=0;i<c1;i++){if(a[i]!=b[i])//找不相等的字符 {for(j=i+1;j<c1;j++){ min++; //保存交换的次数 if(b[i]==a[j])//找与b数组该位置上的数相等的值{a[j]=a[i]; break;//停止交换 }}}}printf("%d\n",min);}else printf("-1\n");}return 0; }
阅读全文
0 0
- xynuoj +-字符串
- xynuoj 幂字符串
- XYNUOJ 幂字符串
- XYNUOJ 1116 字符串排序输出
- XYNUOJ +-字符串 酒馆浪人的博客
- XYNUOJ 两个整数之和
- xynuoj 1247 fatmouse'trade
- XYNUOJ 1259: 找零钱
- XYNUOJ 找明星
- XYNUOJ 1020 求闰年
- XYNUOJ 1080求和
- XYNUOJ 1068 Fibonacci数列
- XYNUOJ 1071 译密码
- XYNUOJ 1095 折半查找
- XYNUOJ 1181移动数据
- XYNUOJ 1122 布尔矩阵
- XYNUOJ 整除的尾数
- XYNUOJ 1458 医院设置
- 程序员的思考
- 针对jsp&servlet服务器遇到的404错误
- caffe分类小例子
- JavaEE之-Spring基本介绍
- 基于jquery的页面元素拖拽组件
- xynuoj +-字符串
- 10.31(周二)
- shell脚本 颜色背景的显示方法
- MNIST数据集训练
- redis详解-(7)有序集合
- JS 数组 返回值方法
- 媒体报道:美国银行即将关闭三个数据中心
- nuxt 引用scss 文件
- SSO单点登录一(Spring+SpringMVC+固定密码)实现的简单的同域SSOdemo