nyoj 915 +-字符(贪心+栈)
2015-03-21 23:27
176 查看
+-字符串
时间限制:1000 ms | 内存限制:65535 KB
难度:1
描述
Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。
输入
多组测试数据
每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。
输出
仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。
样例输入
++-+--+
-++--++
样例输出
4
来源
NBOJ
上传者
TC_周亿
/*
贪心思想:寻找最近的那个解决方案;
注意(1)数组,刚开始没注意一直WA
(2)一些特殊情况需要考虑到
利用 两个数组进行模仿栈的操作
*/
时间限制:1000 ms | 内存限制:65535 KB
难度:1
描述
Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。
输入
多组测试数据
每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。
输出
仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。
样例输入
++-+--+
-++--++
样例输出
4
来源
NBOJ
上传者
TC_周亿
/*
贪心思想:寻找最近的那个解决方案;
注意(1)数组,刚开始没注意一直WA
(2)一些特殊情况需要考虑到
利用 两个数组进行模仿栈的操作
*/
#include<cstdio> #include<cmath> #include<cstring> #include<cstdlib> #include<algorithm> using namespace std; char a[5010]; char b[5010]; int s1[5010],s2[5010]; int main() { while(~scanf("%s%s",a,b)) { int la=strlen(a); int lb=strlen(b); if(la!=lb) printf("-1\n"); else { int i,j=0; int count1=0,count2=0; memset(s1,0,sizeof(s1)); memset(s2,0,sizeof(s2)); for(i=j=0;i<la;i++) if(a[i]=='+') { count1++; s1[j++]=i; } for(i=j=0;i<lb;i++) if(b[i]=='+') { count2++; s2[j++]=i; } if(count1!=count2) printf("-1\n"); else { int sum=0; for(i=0;i<j;i++) sum+=abs(s1[i]-s2[i]); printf("%d\n",sum); } } } return 0; }
相关文章推荐
- nyoj 915 +-字符串(贪心)
- nyoj 915 +-字符串 贪心
- nyoj 915 +-字符串(贪心)
- nyoj915 +-字符串(贪心)
- NYOJ 915 +-字符
- NYOJ 14 会场安排问题 (贪心)
- 贪心算法 nyoj1057
- nyoj--514--1的个数(贪心)
- NYOJ 5 Binary String Matching (kmp 字符串匹配)
- nyoj 915 +-字符串
- NYOJ1036 非洲小孩(又一道贪心水题,区间选点问题)
- nyoj 915 +-字符串 【字符串】
- NYOJ448_寻找最大数【贪心】
- nyoj--364--田忌赛马(贪心)
- nyoj 疯牛(二分搜索+贪心)
- nyoj 791——Color the fence——————【贪心】
- NYOJ 915 +-字符串
- NYOJ 14 会场安排问题【贪心】
- nyoj 阶乘之和 贪心
- NYOJ 915 +-字符串