码迷,mamicode.com
首页 > 其他好文 > 详细

nyoj139--我排第几个 (康拓展开)

时间:2016-04-04 19:41:27      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

我排第几个

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述

现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?

输入
第一行有一个整数n(0<n<=10000);
随后有n行,每行是一个排列;
输出
输出一个整数m,占一行,m表示排列是第几位;
样例输入
3
abcdefghijkl
hgebkflacdji
gfkedhjblcia
样例输出
1
302715242
260726926
来源
[苗栋栋]原创
上传者
苗栋栋
懵B;
#include <cstdio>
#include <cstring>
int a[15];
void deal()
{
    a[1]=1; 
    for(int i=2; i<=12; i++)
        a[i]=a[i-1]*i;
}
int main()
{
    deal();
    int t;scanf("%d", &t);
    while(t--)
    {
        char str[15];
        scanf("%s", str); int len=strlen(str);
        int rec =0;
        for(int i=0; i<len; i++)
        {
            int count=0;
            for(int j=i+1; j<len; j++)
                if(str[j]<str[i]) count++;
            rec+= count*a[len-1-i];    
        } 
        printf("%d\n", rec+1);
    } 
    return 0;
}

 

技术分享
#include <cstdio>
#include <cstring>
int jc[13]={0, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600};
int main()
{
    char normal[13]="abcdefghijkl"; 
    int t; scanf("%d", &t);
    while(t--)
    {
        int v[13]; memset(v, 0, sizeof(v));
        char str[13]; scanf("%s", str);
        int len=strlen(str); 
        int sum=0;
        
        for(int i=0; i<len; i++)
        {
            v[str[i]-a]=1;    
            if(str[i]-normal[i]==0)
            {
                continue;
            }
            else
            {
                int d=0; int p=str[i]-a;
                for(int k=p-1; k>=0; k--)
                    if(v[k]==0)
                        d++;
                int j=i+1;
                int t=12-j;
                //printf("%d\n", j+t);
                sum=sum+d*jc[t];
            }        
        }
        printf("%d\n", sum+1);
    }
    return 0;
}
FALIED

 

nyoj139--我排第几个 (康拓展开)

标签:

原文地址:http://www.cnblogs.com/fengshun/p/5352524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!