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

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

    每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。
    输出
    仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。
    样例输入
    ++-+--+ 
    -++--++ 

    样例输出

    4

    //刚开始理解错误,,输入时保证字串a,b长度相同。。将a变为b,+和-交换最终始a,b一样,若不存在输出-1(则a中的+和b中的+数量一样)

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    int main()
    {
    	char a[5000],b[5000];
    	while(cin>>a>>b)
    	{
    		int x=strlen(a);
    	    int i,j,t=0;
    		int flag1=0,flag2=0;
    		for(i=0;i<x;i++)
    		{
    			if(a[i]=='+')
    				flag1++;
    			if(b[i]=='+')
    				flag2++;	
    		}
    		if(flag1!=flag2)
    		{
    			cout<<"-1"<<endl;
    			continue;
    		}
    	    for(i=0;i<x;i++)
    		{
    			if(a[i]!=b[i])
    			{
    				for(j=i+1;j<x;j++)
    				{
    					if(a[j]==b[i])
    					{
    						swap(a[i],a[j]);
    						t+=(j-i);
    				    	break;
    					}
    				}
    			}
    		}
    		cout<<t<<endl;
    	}
    	return 0;
    }


  • 相关阅读:
    proc文件系统面面谈
    如何创建,增加SWAP?
    使用linux中的fdisk无损坏合并分区
    QEMU+Accelerator
    QEMU网络配置
    Linux主机设NAT
    试用QEMU,安装个FreeBSD 5.3
    QEMU简介
    使用Vesa2
    BugFree介绍
  • 原文地址:https://www.cnblogs.com/NYNU-ACM/p/4237311.html
Copyright © 2011-2022 走看看