首页 > 代码库 > nyoj 915 +-字符串(贪心)

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;
}


nyoj 915 +-字符串(贪心)