zoukankan      html  css  js  c++  java
  • 贪心算法训练(九)——Best Cow Line(字典序最小问题)

    原题链接:Best Cow Line

    1. 问题描述

    2. 输入

    6
    A
    C
    D
    B
    C
    B

    3. 输出

    ABCBCD

    4.思路分析

      不断地取原字符串 S 中开头和末尾比较小的字符串放到 T 的末尾

      特殊情况:S 的开头和末尾一样,先放开头的还是结尾的字母。解决办法:将 S 反序排列得到 $S^{'}$ ,与 S 比较,哪个小,就放哪个

    5. 代码

    #include <iostream>
    #include<cstring>

    using namespace std;

    int n,i,j;
    char s[2002],temp[2002],t[2002];

    int main()
    {
        cin>>n;
        for(i=0;i<n;i++)
        {
            cin>>s[i];
            temp[n-i-1]=s[i];
        }
        for(i=0;i<n;i++)
        {
            if(strcmp(s,temp)<0)
            {
                t[i]=s[0];
                for(j=0;j<n-i-1;j++)
                    s[j]=s[j+1];
            }
            else
            {
                t[i]=temp[0];
                for(j=0;j<n-i-1;j++)
                    temp[j]=temp[j+1];
            }
            cout<<t[i];
            if((i+1)%80==0)
                cout<<endl;
        }
      return 0;
    }

    转化成数字数组处理

    #include <iostream>
    #include <cstring>

    using namespace std;

    int n;
    char word[2002],t[2002];
    int num[2002],temp[2002],c[2002];

    int main()
    {
        ios::sync_with_stdio(false);
        int i = 0,j = 0;
        cin>>n;
        for(i = 0; i < n; i++)
        {
            cin>>word[i];
            num[i] = word[i] - '0' - 16;
            temp[n-i-1] = num[i];
        }
        for(i = 0; i < n; i++)
        {
            if(memcmp(num,temp,sizeof(num) <= sizeof(temp) ? sizeof(num)/sizeof(int):sizeof(temp)/sizeof(int)) < 0)
            {
                t[i] = num[0] + 16 + '0';
                for(j = 0;j < n-1-i;j++)
                    num[j] = num[j+1];
            }
            else
            {
                t[i] = temp[0] + 16 + '0';
                for(j = 0;j < n-1-i;j++)
                    temp[j] = temp[j+1];
            }
            cout<<t[i];
            if((i+1)%80 == 0)
                cout<<endl;
        }
        return 0;
    }
  • 相关阅读:
    postgresql小纪
    Java的大内存分页支持
    GCViewer / MAT
    js给数组去重写法
    解决mybatis foreach 错误: Parameter '__frch_item_0' not found
    JSON字符串和JS对象之间的转换
    使用IntelliJ IDEA搭建多maven模块JAVA项目
    jstl中的sql:query标签获取的结果如何格式化输出
    Label控件如何根据字符串自定义大小
    winform/窗体鼠标事件编程中的几个问题
  • 原文地址:https://www.cnblogs.com/NikkiNikita/p/9462333.html
Copyright © 2011-2022 走看看