【ACM】nyoj_139_我排第几个_201308062046
我排第几个
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?
输入
第一行有一个整数n(0<n<=10000);
随后有n行,每行是一个排列;
输出
输出一个整数m,占一行,m表示排列是第几位;
样例输入
3
abcdefghijkl
hgebkflacdji
gfkedhjblcia样例输出
1
302715242
260726926
#include <stdio.h>
#include <string.h>
int JC(int n)
{
int i,sum=1;
for(i=1;i<=n;i++)
sum*=i;
return sum;
}
int main()
{
int N;
scanf("%d",&N);
while(N--)
{
int a[15];
char s[15];
int i,j,k,t,len,sum,ss;
scanf("%s",s);
t=len=strlen(s);
sum=ss=0;
memset(a,0,sizeof(a));
for(i=0;i<len;i++)
{
for(k=0,j=i+1;j<len;j++)
{
if(s[j]<s[i])
k++;
}
a[--t]=k;
}
for(i=len-1;i>=0;i--)
{
ss=JC(i);
sum+=a[i]*ss;
}
printf("%d\n",sum+1);
}
return 0;
}
组合数学之康拓展开:
公式描述:
把一个整数X展开成如下形式
X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! 其中,a为整数,并且0<=ai<i(1<=i<=n)。
应用:
求一个排列中在全排列中排第几:
例:
321是{1,2,3}全排列中第几个大的数
解析:
第一位是3,当第一位的数小于3时,那排列数小于321 如 123、 213 ,小于3的数有1、2 。所以有2*2!个。再看小于第二位2的:小于2的数只有一个就是1 ,所以有1*1!=1 所以小于321的{1,2,3}排列数有2*2!+1*1!=5个?
再举个例子:1324是{1,2,3,4}排列数中第几个大的数
第一位是1小于1的数没有,是0个 0*3! 第二位是3小于3的数有1和2,但1已经在第一位了,所以只有一个数2 1*2! 。第三位是2小于2的数是1,但1在第一位,所以?有0个数 0*1! ,所以比1324小的排列有0*3!+1*2!+0*1!=2个,1324是第三个大数。
转载于:https://www.cnblogs.com/xl1027515989/p/3241984.html
【ACM】nyoj_139_我排第几个_201308062046相关推荐
- 两年工作经验,离职了...
Hi,大家好,我是3y 啊,好久没在csdn更新了- 当大家看到这篇文章的时候,我已经办完离职手续离开了蘑菇街.从19年初到蘑菇街实习,到现在不知不觉已经两年多了.两年时间说短不短,说长也不长. 之前 ...
- 康拓展开与逆康拓展开
康托展开与逆康托展开 康托展开据我所理解,应该便是给你一个已知的排列,然后这个排列在全排列中是第几小或者第几大的,一般都是按字典序计算,即为第几小的.康托展开的公式为:X=a[n]*(n-1)!+ ...
- 网内计算:可编程数据平面和技术特定应用综述
网内计算:可编程数据平面和技术特定应用综述 摘要--与云计算相比,边缘计算提供了更靠近终端设备的处理,降低了用户体验的延迟.最新的In-Network Computing范例采用可编程网络元素在数据达 ...
- ACM学习历程—HDU2068 RPG的错排(组合数学)
Description 今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道RPG三个人具体是谁谁.RPG给他机会让他猜猜,第一次猜:R是公主,P是草儿 ...
- 2021-2022-2 ACM集训队每周程序设计竞赛(1) - 问题 A: 排火车 - 题解
题意: S u n n y Sunny Sunny之后接 C l o u d y Cloudy Cloudy, C l o u d y Cloudy Cloudy之后接 R a i n y Rainy ...
- 【转】[退役]纪念我的ACM——headacher@XDU
转自:http://hi.baidu.com/headacher/item/5a2ce1d50609091b20e25022 退役了,是时候总结一下我ACM的生涯了.虽然很舍不得,但这段回忆很值得纪念 ...
- 做acm 需要学的算法
做acm 需要学的算法 转一个搞ACM需要的掌握的算法. 要注意,ACM的竞赛性强,因此自己应该和自己的实际应用联系起来. 适合自己的才是好的,有的人不适合搞算法,喜欢系统架构,因此不要看到别人什 ...
- acm经典题Mark
著名的北邮ACM推荐50题 POJ推荐50题 1.标记"难"和"稍难"的题目可以看看,思考一下,不做要求,当然有能力的同学可以直接切掉. 2.标记为A and ...
- ZOJ 1025 Wooden Sticks(快排+贪心)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=25 题目大意:机器运送n个木条,每个木条有一个长度和重量.运送第一根木 ...
最新文章
- java 枚举 循环_java – 在枚举中实现内部接口时的循环继承
- 使sqoop能够启用压缩的一些配置
- 查看无线网卡工作模式
- 像证券交易员一样思考_2.理解绝招
- 不平衡数据的数据处理方法
- 【公司金融课堂学习笔记】1、企业融资—风险投资
- 北风设计模式课程---享元模式
- 什么是跨域?跨域如何解决
- 一篇英文文档中找出频数最多的10个单词
- 【README3】动态规划之“找零钱”说明最优子结构怎么解决
- 2021-10-28 python爬虫学习
- TypeScript学习(一):原始数据类型的定义
- java timer指定线程池_Java 定时器(Timer)及线程池里使用定时器实例代码
- break、continue
- kafka生产者集群和分区,消费者轮询接收
- 驭势领读 | 《让大象飞》:资本寒冬正好能让市场回归理性
- 湖北武汉劳务员考试建筑施工企业的劳务实名制建筑七大员考试
- 2018科大讯飞AI营销算法比赛笔记
- 机器学习笔记 (第一周)
- BroadcastRecever