NYOJ 915 +-字符串
2014-05-01 22:45
218 查看
+-字符串
时间限制:1000 ms | 内存限制:65535 KB难度:1描述Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。输入多组测试数据每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。输出仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。样例输入++-+--+ -++--++样例输出
4
NYOJ 915 +-字符串链接
解析:这道题自己是没找出什么规律 这是我的弱项!!
解题思路:
1:判断+与-个数是否相同 不相同直接输出一
2:不会用嘴说可以看代码 很容易懂
#include<stdio.h>#include<string.h>char a[5005], b[5005];int main(){int i, len, flag1, flag2, count, j;while(scanf("%s%s", a, b) != EOF){flag1 = flag2 = 0;len = strlen(a);for(i = 0; i < len; i++){if(a[i] == '+')flag1++;if(b[i] == '+')flag2++;}if(flag1 != flag2){printf("-1\n");continue;}count = 0;for(i = 0; i < len; i++){if(a[i] != b[i])//发现不相同的就开始从第一个字符串a中往后找与b[i]相同的字符{for(j = i + 1; j < len; j++){if(a[j] == b[i]){count += j - i;//找到相同的计算移动次数a[j] = a[i];//记得把a[j]处的值换成a[i]break;}}}}printf("%d\n", count);}return 0;}
相关文章推荐
- Linux C函数参考手册(PDF版)
- C#实现打造气泡屏幕保护效果
- C/C++数据对齐详细解析
- C 语言基础教程(我的C之旅开始了)[三]
- C 语言基础教程(我的C之旅开始了)[七]
- C/C++ 宏详细解析
- 用C#生成不重复的随机数的代码
- 在c和c++中实现函数回调
- 浅析C/C++中被人误解的SIZEOF
- C 语言基础教程(我的C之旅开始了)[六]
- C/C++函数调用的几种方式总结
- c/c++中变量的声明和定义深入解析
- 浅析c与c++中struct的区别
- 深入详解C编写Windows服务程序的五个步骤
- 深入理解C/C++混合编程
- C 语言基础教程(一)颜色加亮
- 关于《C和指针》的学习笔记
- c_str()的用法详细解析
- C/C++中可变参数的用法详细解析