nyoj 915 +-字符串(贪心)

+-字符串

时间限制:1000 ms  |  内存限制:65535 KB

难度:1

描述
Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。

输入
多组测试数据

每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。

输出
仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。
样例输入
++-+--+
-++--++ 
样例输出
4
来源
NBOJ
上传者

TC_周亿

题意:就是找到上下对应的字符不相等的,然后就是将其对后面的遍历,然后找到能够对应替换的字符,求出将所有第一个与第二个串中不同的字符转移成第二个,需要的最少操作的次数。

难点:对题意的正确理解!

代码如下:

#include<stdio.h>
#include<string.h>
char a[5050],b[5050];
int main()
{
	while(~scanf("%s%s",a,b))
	{
		int sum=0;
		int i,j;
		int len=strlen(a);
		for(i=0;i<len;i++)
		{
			if(a[i]!=b[i])
			{
				for(j=i+1;j<len;++j)
				{
					if(a[j]==b[i])
					{
						a[j]=a[i];//here is a trap,you need to change the key you find to the right type
						break;
					}
				}
				sum+=j-i;
			}
		}
		printf("%d\n",sum);
	}
	return 0;
}
时间: 2024-10-11 06:22:04

nyoj 915 +-字符串(贪心)的相关文章

NYOJ 915 +-字符串

+-字符串 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 Shiva得到了两个只有加号和减号的字符串,字串长度相同.Shiva一次可以把一个加号和它相邻的减号交换.他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串.你现在要去帮助他完成那个这个问题. 输入 多组测试数据 每组数据有两行,每行包含一个由"+"和"-"最成的字符串.每个子符串长度不超过5000. 输出 仅一个整数,输出最少需要操作的次数.如果答案不存在,输出-

NYOJ 915 +-字符串【贪心】

+-字符串 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 Shiva得到了两个只有加号和减号的字符串,字串长度相同.Shiva一次可以把一个加号和它相邻的减号交换.他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串.你现在要去帮助他完成那个这个问题. 输入 多组测试数据 每组数据有两行,每行包含一个由"+"和"-"最成的字符串.每个子符串长度不超过5000. 输出 仅一个整数,输出最少需要操作的次数.如果答案不存在,输出-

nyoj 915 +-字符串【字符串】

+-字符串 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 Shiva得到了两个只有加号和减号的字符串,字串长度相同.Shiva一次可以把一个加号和它相邻的减号交换.他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串.你现在要去帮助他完成那个这个问题. 输入 多组测试数据 每组数据有两行,每行包含一个由"+"和"-"最成的字符串.每个子符串长度不超过5000. 输出 仅一个整数,输出最少需要操作的次数.如果答案不存在,输出-

hihocoder-1327-分割字符串--贪心

hihocoder-1327-分割字符串--贪心 1327 : 分隔相同字符 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个只包含小写字母'a'-'z'的字符串 S ,你需要将 S 中的字符重新排序,使得任意两个相同的字符不连在一起. 如果有多个重排后字符串满足条件,输出字典序最小的一个. 如果不存在满足条件的字符串,输出INVALID. 输入 字符串S.(1 ≤ |S| ≤ 100000) 输出 输出字典序最小的答案或者INVALID. 样例输入 aaa

NYOJ 658 字符串右移

字符串右移 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 LZQ最近迷上了字符串,于是他有一个问题想考你,聪明的你一定知道答案.问题如下:给你一个字符串,让你对其进行向右移动K次,输出新的字符串. 输入 输入数据有多组,每组有一个字符串STR与一个数字K,表示对字符串STR向右移动K位. 输出 输出新的字符串STR1. 样例输入 abcd1234 4 sdfe123f 10 样例输出 1234abcd 3fsdfe12 AC码: #include<stdio.h>

NYOJ 题目915 +-字符串

题目描述: Shiva得到了两个只有加号和减号的字符串,字串长度相同.Shiva一次可以把一个加号和它相邻的减号交换.他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串.你现在要去帮助他完成那个这个问题 输入 多组测试数据 每组数据有两行,每行包含一个由"+"和"-"最成的字符串.每个子符串长度不超过5000. 输出 仅一个整数,输出最少需要操作的次数.如果答案不存在,输出-1. 样例输入 ++-+--+ -++--++ 样例输出 4 #include&

POJ 3111 K Best &amp;&amp;NYOJ 914 (二分+ 贪心,最大化平均值)

链接:NYOJ:click here, POJ:click here 题意:(最大化平均值,挑战编程P143) 有n个物品的重量和价值分别是w[i]和v[i],从中选出K个物品使得单位重量的价值最大.(1<=k<=n<=10^41<=w[i],v[i]<=10^6) 一般想到的是按单位价值对物品排序,然后贪心选取,但是这个方法是错误的,比如对nyoj的例题来说,从大到小地进行选取,输入的结果是5/7=0.714对于有样例不满足.我们一般用二分搜索来做(其实这就是一个01分数规

nyoj 113 字符串替换 (string中替换函数replace()和查找函数find())

字符串替换 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 编写一个程序实现将字符串中的所有"you"替换成"we" 输入 输入包含多行数据 每行数据是一个字符串,长度不超过1000 数据以EOF结束 输出 对于输入的每一行,输出替换后的字符串 样例输入 you are what you do 样例输出 we are what we do读一行的方法:用geiline(cin,s) 1 #include <iostream>

NYOJ 113 字符串替换(C++STL解法)

字符串替换 时间限制:3000 ms  |            内存限制:65535 KB 难度:2 描述 编写一个程序实现将字符串中的所有"you"替换成"we" 输入 输入包含多行数据 每行数据是一个字符串,长度不超过1000 数据以EOF结束 输出 对于输入的每一行,输出替换后的字符串 样例输入 you are what you do 样例输出 we are what we do 也是做过很多次的水题了,最近学STL,利用这题熟悉find(),replace