zoukankan      html  css  js  c++  java
  • 三值排序——usaco

    求最小排序交换次数
    贪心做
    View Code
    #include<stdio.h>
    #include
    <algorithm>
    #include
    <iostream>
    using namespace std;

    int b[1009],a[1009];

    int min(int a,int b)
    {
    if(a>b)return b;
    else return a;
    }
    int max(int a,int b)
    {
    if(a>b)return a;
    else return b;
    }

    int main()
    {
    int n;
    int add[6];
    while(scanf("%d",&n)!=EOF)
    {
    memset(add,
    0,sizeof(add));

    int i;
    for(i=0;i<n;i++)
    {
    scanf(
    "%d",&a[i]);
    b[i]
    =a[i];
    }

    sort(
    &a[0],&a[n]);
    int all=0;
    for(i=0;i<n;i++)
    {
    if(a[i]==1&&b[i]==2)
    add[
    0]++;
    else if(a[i]==2&&b[i]==1)
    add[
    1]++;
    else if(a[i]==2&&b[i]==3)
    add[
    2]++;
    else if(a[i]==3&&b[i]==2)
    add[
    3]++;
    else if(a[i]==1&&b[i]==3)
    add[
    4]++;
    else if(a[i]==3&&b[i]==1)
    add[
    5]++;
    }
    all
    =min(add[0],add[1])+min(add[2],add[3])+min(add[4],add[5]);
    all
    +=(max(add[0],add[1])-min(add[0],add[1])+max(add[2],add[3])-min(add[2],add[3])+max(add[4],add[5])-min(add[4],add[5]))/3*2;
    printf(
    "%d\n",all);
    }
    }

      

  • 相关阅读:
    键盘快捷键
    电脑命令行命令
    网络基础TCP/IP
    运算符优先级
    元字符汇总
    正则表达式
    模板语法(DOM与Vue数据绑定)
    computed、methods、watch
    vue实例
    坐标轴
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2107159.html
Copyright © 2011-2022 走看看