zoukankan      html  css  js  c++  java
  • nyoj 915 +-字符串

    +-字符串

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:1
     
    描述
    Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。
     
    输入
    多组测试数据

    每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。
    输出
    仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。
    样例输入
    ++-+--+ 
    -++--++ 
    样例输出
    4
    我一直以为abs函数包含在math头文件里 没想到竟然包含在stdlib头文件里 跪了
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<math.h>
    #define MAX 5100
    int main()
    {
    	int sum,i,s1,s2,l1,l2,min;
    	char str[MAX],str1[MAX];
    	int a[MAX],b[MAX];
    	while(scanf("%s%s",str,str1)!=EOF)
    	{
    		l1=strlen(str);
    		l2=strlen(str1);
    		s1=0;s2=0;
    		for(i=0;i<l1;i++)
    		{
    			if(str[i]=='+')
    			a[s1++]=i;
    		}
    		for(i=0;i<l2;i++)
    		{
    			if(str1[i]=='+')
    			b[s2++]=i;
    		}
    		if(l1!=l2||s1!=s2)
    		{
    			printf("-1
    ");
    			continue;
    		}
    		sum=0;
    		for(i=0;i<s1;i++)
    		{
    			min=a[i]-b[i];
    			sum+=abs(min);
    		}
    		printf("%d
    ",sum);
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    歌德巴赫猜想
    Dice Possibility
    ACboy needs your help(简单DP)
    Bag of mice(概率DP)
    合唱队形(LIS)
    地震预测(模拟链表)
    关于KMP算法的感想
    Card Collector
    LOOPS
    Aeroplane chess(简单概率dp)
  • 原文地址:https://www.cnblogs.com/tonghao/p/4588302.html
Copyright © 2011-2022 走看看