hdu 4550 一些小技巧

来源:互联网 发布:java构造图例子 编辑:程序博客网 时间:2024/05/21 18:50
#include<stdio.h>#include<string.h>int main(){    int t,len,i,j,k;    char a[110],c,d;    scanf("%d",&t);    getchar();    while(t--)    {        gets(a);        len=strlen(a);c='9';                //c为节点        for(i=0;i<len;i++)        {            if(a[i]<=c&&a[i]!='0')            {                c=a[i];                k=i;            }        }                                  //找牌        for(i=0;i<len;i++)        {            if(i<k)            {                if(a[i]<=a[0])                {                    d=a[i];                    for(j=i;j>0;j--)                        a[j]=a[j-1];                    a[0]=d;                }            }            if(i==k)            {                for(j=i;j>0;j--)                    a[j]=a[j-1];                a[0]=c;            }        }        puts(a);    }}


当有一群特定的节点时,有事可以只找其中最有代表性的一个

例如hdu4550一题:比第一张牌要小的牌可以前置,单当牌组排好后,牌组第一张牌不能为零。所以我们找牌组中最小的不为零的最靠后的一张牌作为节点,用这张牌来处理循环

原创粉丝点击