zoukankan      html  css  js  c++  java
  • 南阳915——+-字符串

    题目:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=915

    思路:两个字符串1,2,从前往后,找到1与2不同的第一个字符,要通过相邻字符串交换,使得这个位置上的字符串相同,单单站在这个问题上,最好的方法是:从1字符串的这个位置往后找与2字符串这个位置字符相同的字符,然后不断的往前交换。但是整体上也不知道这种方法是不是最少步骤的,不妨试一试,这也是贪心的思想(局部最好,到整体)。下面代码把不断交换的过程省略了,因为交换的次数只与两个位置i,j有关c=j-i,而不断交换后的结果 与 两个位置上的字符交换 一样,所以直接优化成后一种。

    代码:

     1 #include<stdio.h>
     2 #include<string.h>
     3 int main()
     4 {
     5     char s1[5005],s2[5005],ch;
     6     int i,j,count=0,flag;
     7     while(~scanf("%s",&s1))
     8     {
     9         scanf("%s",&s2);
    10         count=0;
    11         flag=1;
    12         for(i=0; s1[i]!=''; i++)
    13         {
    14             if(s1[i]!=s2[i])
    15             {
    16                 flag=0;
    17                 for(j=i+1; s1[j]!=''; j++)
    18                 {
    19                     if(s1[j]==s2[i]){
    20                             flag=1;//说明找着了
    21                             ch=s1[i];
    22                            s1[i]=s1[j];
    23                     s1[j]=ch;//i,j位置上的字符串交换
    24                 count=count+j-i;
    25                         break;
    26                     }
    27                 }
    28               if(!flag){//没有找到
    29                     printf("-1
    ");
    30               break;
    31               }
    32             }
    33         }
    34         if(flag)
    35             printf("%d
    ",count);
    36     }
    37     return 0;
    38 }
  • 相关阅读:
    知识积累
    路由层
    数据表记录的增删改查
    连接数据库
    django数据请求
    力扣(LeetCode) 509. 斐波那契数
    力扣(LeetCode)69. x 的平方根
    力扣(LeetCode) 104. 二叉树的最大深度
    力扣(LeetCode) 27. 移除元素
    力扣(LeetCode) 136. 只出现一次的数字
  • 原文地址:https://www.cnblogs.com/li-yaoyao/p/9538190.html
Copyright © 2011-2022 走看看