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

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

    每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。
    输出
    仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。
    样例输入
    ++-+--+ 
    -++--++ 
    样例输出
    4
     1 #include<stdio.h>/*AC我自己没做出来,看得题解*/
     2 #include<string.h>
     3 int find(char *p,int n)
     4 {
     5     int i,count=0;
     6     for(i=0;i<n;i++)
     7     {
     8         if(*(p+i)=='+')
     9             count++;
    10     }
    11     return count;
    12 }
    13 int cha(int x,int y)
    14 {
    15     if(x>y)
    16         return x-y;
    17     return y-x;
    18 }
    19 int main()
    20 {
    21     char a[5005],b[5005];
    22     while(scanf("%s%s",a,b)==2)
    23     {    
    24         int i,len,k=0,j,count=0;
    25         len=strlen(a);
    26         if((strlen(a)!=strlen(b))||find(a,strlen(a))!=find(b,strlen(b)))/*判断能否转换*/
    27         {
    28             printf("-1
    ");
    29             continue;
    30         }
    31         else/*找到a中第i个+位置w1和b第i个+位置w2,|w1-w2|即为移动位数*/
    32         {
    33             for(i=0;i<strlen(a);i++)
    34                 {
    35                     if(a[i]!='+')
    36                         continue;
    37                     else
    38                     {
    39                         for(j=k;b[j]!='';j++)
    40                         {
    41                             if(b[j]=='+')
    42                             {
    43                                 count+=cha(i,j);
    44                                 k=j+1;
    45                                 break;
    46                             }
    47                         }
    48                     }
    49                 }
    50 
    51         }
    52         printf("%d
    ",count);
    53     }
    54 }
  • 相关阅读:
    算法--有序矩阵查找指定数
    算法--三色排序(经典的荷兰国旗问题)
    算法--两个有序数组合并
    Latex 学习之旅
    Windows 下安装 tensorflow & keras & opencv 的避坑指南!
    platform 模块
    `__pycache__` 是什么
    Markdown 实现首行缩进
    LaTex 小技巧
    LaTeX算法排版 笔记
  • 原文地址:https://www.cnblogs.com/a1225234/p/4469692.html
Copyright © 2011-2022 走看看