zoukankan      html  css  js  c++  java
  • COJ1101(Sorting a ThreeValued Sequence)

    题目链接

    题目大意:给定一个只含1,2,3的数列,求排序的最小交换次数。

    这题说不出需要用什么算法,如果有的话,应该是贪心的思想。

    我的做法是,先统计1,2,3的个数,然后就知道了1,2,3应该排在哪些区间,首先将错位的两两交换(例如1在2的区间,2在1的区间),然后三个之间交换(例如1在2的区间,2在3的区间,3在1的区间)。

    View Code
     1 #include <stdio.h>
     2 #include <memory.h>
     3 #define MIN(a,b)  ((a)<(b)?(a):(b))
     4 #define N 1000
     5 int a[N];
     6 int d[3][3];
     7 int main()
     8 {
     9   int i,n,x,ans;
    10   while(~scanf("%d",&n))
    11   {
    12     memset(d,0,sizeof(d));
    13     for(i=0;i<n;i++)
    14     {
    15       scanf("%d",&x);
    16       a[i]=x;
    17       d[x-1][x-1]++;
    18     }
    19     for(i=0;i<d[0][0];i++)  if(a[i]!=1) d[0][a[i]-1]++;
    20     for(i=d[0][0];i<d[0][0]+d[1][1];i++)  if(a[i]!=2) d[1][a[i]-1]++;
    21     for(i=d[0][0]+d[1][1];i<n;i++)  if(a[i]!=3) d[2][a[i]-1]++;
    22     ans=0;
    23     ans+=MIN(d[0][1],d[1][0])+MIN(d[0][2],d[2][0])+MIN(d[1][2],d[2][1]);
    24     x=d[0][1]-d[1][0];
    25     if(x<0) x=-x;
    26     ans+=2*x;
    27     printf("%d\n",ans);
    28   }
    29   return 0;
    30 }
  • 相关阅读:
    Django URL
    django初识
    django 相关配置(pycharm)
    mysql数据库语言分类
    css常用
    Django—BBS注册页面
    Django—Auth认证模块
    Django—中间件
    Django—form组件,cookie和session
    Django—AJAX
  • 原文地址:https://www.cnblogs.com/algorithms/p/2470385.html
Copyright © 2011-2022 走看看