NOIP2008复赛

要提高还是普及?

字典序最小是什么意思 什么叫字典序最小字典序最小是什么意思 什么叫字典序最小


字典序最小是什么意思 什么叫字典序最小


普及的

全国信息学奥林匹克联赛(NOIP2008)复赛

普及组

一.题目概览

中文题目名称 ISBN号码 排座椅 传球游戏 立体图

英文题目名称 in seat ball drawing

可执行文件名 in seat ball drawing

输入文件名 in.in seat.in ball.in drawing.in

输出文件名 in.out seat.out ball.out drawing.out

每个测试点时限 1秒 1秒 1秒 1秒

测试点数目 10 10 10 10

每个测试点分值 10 10 10 10

比较方式 全文比较 全文比较 全文比较 全文比较

题目类型 传统 传统 传统 传统

二.提交源程序文件名

对于pascal语言 in.pas seat.pas ball.pas drawing.pas

对于C语言 in.c seat.c ball.c drawing.c

对于C++语言 in.cpp seat.cpp ball.cpp drawing.cpp

三.编译命令(不包含任何优化开关)

对于pascal语言 fpc in.pas fpc seat.pas fpc ball.pas fpc drawing.pas

对于C语言 gcc –o in

in.c gcc –o seat

seat.c gcc –o ball

ball.c gcc –o drawing

drawing.c

对于C++语言 g++ –o in

in.cpp g++ –o seat

seat.cpp g++ –o ball

ball.cpp g++ –o

drawing

drawing.cpp

四.运行内存限制

运行内存上限 50M 50M 50M 50M

注意事项:

1、文件名(程序名和输入输出文件名)必须使用小写。

2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。

3、全国统一评测时采用的机器配置为:CPU 1.9GHz, 内存512M, 上述时限以此配置为准。

各省在自测时可根据具体配置调整时限。

1.ISBN号码

每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;一位为识别码。

识别码的计算方法如下:

首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。

你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。

【输入】

输入文件in.in只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。

输出文件in.out共一行,如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。

【输入输出样例1】

0-670-82162-4 Right

【输入输出样例2】

0-670-82162-0 0-670-82162-4

2.排座椅

上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳。同学们在教室中坐成了M行N列,坐在第i行第j列

的同学的位置是(i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道。于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了两个会交头接耳的同学,那么他们就不会交头接耳了。

请你帮忙给小雪编写一个程序,给出的通道划分方案。在该方案下,上课时交头接耳的学生对数最少。

【输入】

输入文件seat.in的行,有5各用空格隔开的整数,分别是M,N,K,L,D(2<=N,M<=1000,0<=K

接下来D行,每行有4个用空格隔开的整数,第i行的4个整数Xi,Yi,Pi,Qi,表示坐在位置(Xi,Yi)与(Pi,Qi)的两个同学会交头接耳(输入保证他们前后相邻或者左右相邻)。

输入数据保证方案的性。

输出文件seat.out共两行。

行包含K个整数,a1a2……aK,表示第a1行和a1+1行之间、第a2行和第a2+1行之间、…、第aK行和第aK+1行之间要开辟通道,其中ai< ai+1,每两个整数之间用空格隔开(行尾没有空格)。

第二行包含L个整数,b1b2……bk,表示第b1列和b1+1列之间、第b2列和第b2+1列之间、…、第bL列和第bL+1列之间要开辟通道,其中bi< bi+1,每两个整数之间用空格隔开(行尾没有空格)。

【输入输出样例】

seat.in seat.out

4 5 1 2 3

4 2 4 3

2 3 3 3

2 5 2 4 2

2 4

【输入输出样例解释】

※※ + +

1 2 3 4 5

上图中用符号、※、+ 标出了3对会交头接耳的学生的位置,图中3条粗线的位置表示通道,图示的通道划分方案是的方案。

3.传球游戏

上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。

聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法可以使得从小蛮手里开始传的球,传了m次以后,又回到小蛮手里。两种传球的方法被视作不同的方法,当且仅当这两种方法中,接到球的同学按接球顺序组成的序列是不同的。比如有3个同学1号、2号、3号,并设小蛮为1号,球传了3次回到小蛮手里的方式有1->2->3->1和1->3->2->1,共2种。

【输入】

输入文件ball.in共一行,有两个用空格隔开的整数n,m(3<=n<=30,1<=m<=30)。

输出文件ball.out共一行,有一个整数,表示符合题意的方法数。

【输入输出样例】

ball.in ball.out

3 3 2

【限制】

40%的数据满足:3<=n<=30,1<=m<=20

的数据满足:3<=n<=30,1<=m<=30

4.立体图

小渊是个聪明的孩子,他经常会给周围的小朋友们讲些自己认为有趣的内容。最近,他准备给小朋友们讲解立体图,请你帮他画出立体图。

小渊有一块面积为mn的矩形区域,上面有mn个边长为1的格子,每个格子上堆了一些同样大小的吉姆(积木的长宽高都是1),小渊想请你打印出这些格子的立体图。我们定义每个积木为如下格式,并且不会做任何翻转旋转,只会严格以这一种形式摆放:

+---+

/ /| 高

+---+ |

| | +

| |/ 宽

+---+

长每个顶点用1个加号’+’表示,长用3个”-“表示,宽用1个”/”表示,高用两个”|”表示。字符’+’ ‘-‘’/’ ‘|’的ASCII码分别为43,45,47,124。字符’.’(ASCII码46)需要作为背景输出,即立体图里的空白部分需要用’.’代替。立体图的画法如下面的规则:

若两块积木左右相邻,图示为:

..+---+---+

输出 共两行 行 如果是幸运单词 则输出 Lucky Word./ / /|

+---+---+ |

| | | +

+---+---+..

若两块积木上下相邻,图示为:

..+---+

./ /|

+---+ |

| | +

| |/|

+---+ |

| | +

| 18 9 |/.

若两块积木前后相邻,图示为:

….+---+

…/ /|

..+---+ |

./ /| +

+---+ |/.

| | +..

| |/…

+---+….

立体图中,定义位于第(m,1)的格子(即第m行第1列的格子)上面自底向上的块积木(即最下面的一块积木)的左下角顶点为整张图最左下角的点。

【输入】

输入文件drawing.in行有用空格隔开的两个整数m和n,表示有mn个格子(1<=m,n<=50)。

接下来的m行,是一个mn的矩阵,每行有n个用空格隔开的整数,其中第i行第j列上的整数表示第i行第j列的格子上摞有多少个积木(1<=每个格子上的积木数<=100)。

输出文件drawing.out中包含题目要求的立体图,是一个K行L列的字符矩阵,其中K和L表示最少需要K行L列才能按规定输出立体图。

【输入输出样例】

drawing.in drawing.out

3 4

2 2 1 2

2 2 1 1

3 2 1 2 ......+---+---+...+---+

..+---+ / /|../ /|

./ /|-+---+ |.+---+ |

+---+ |/ /| +-| | +

| | +---+ |/+---+ |/|

| |/ /| +/ /|-+ |

+---+---+ |/+---+ |/| +

| | | +-| | + |/.

| | |/ | |/| +..

+---+---+---+---+ |/...

| | | | | +....

| | | | |/.....

+---+---+---+---+......

提高的

全国信息学奥林匹克联赛(NOIP2008)复赛

提高组

一、题目概览

中文题目名称 笨小猴 火柴棒等式 传纸条 双栈排序

英文题目名称 word matches message twostack

可执行文件名 word matches message twostack

输入文件名 word,in matches.in message.in twostack.in

输出文件名 word.out matches.out message.out twostack.out

每个测试点时限 1秒 1秒 1秒 1秒

测试点数目 10 10 10 10

每个测试点分值 10 10 10 10

比较方式 全文比较 全文比较 全文比较 全文比较

题目类型 传统 传统 传统 传统

二、提交源程序文件名

对于Pascal语言 word.pas matches.pas message.pas twostack.pas

对于C语言 word.c matches.c message.c twostack.c

对于C++语言 word.cpp matches.cpp message.cpp twostack.cpp

三、编译命令(不包含任何优化开关)

对于Pascal语言 fpc word.pas fpc matches.pas fpc message.pas fpc twostack.pas

对于C语言 gcc –o word word.c gcc –o matches matches.c gcc –o message message.c gcc –o twostack twostack.c

对于C++语言 g++ -o word word.cpp g++-o matches matches.cpp g++ -o message message.cpp g++ -o twostack twostack.cpp

四、运行内存限制

运行内存上限 50M 50M 50M 50M

注意事项:

1. 文件名(程序名和输入输出文件名)必须使用大写。

2. C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。

3. 全国统一评测时采用的机器配置为:CPU 1.9GHz,内存512M,上述时限以此配置为准。各省在自测时可根据具体配置调整时限。

1. 笨小猴

()

笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!

这种方法的具体描述如下:设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的。

【输入】

输入文件word.in只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。

输出文件word.out共两行,行是一个字符串,设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;

第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0。

【输入输出样例1】

word.in word.out

2【输入输出样例1解释】

单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。

【输入输出样例2】

word.in word.out

Olympic No Answer

单词olympic中出现最多的字母i出现了2次,出现次数最少的字母出现了1次,2-1=1,1不是质数。

2. 火柴棒等式

()

给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则位不能是0)。用火柴棍拼数字0-9的拼法如图所示:

1. 加号与等号各自需要两根火柴棍

2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)

3. n根火柴棍必须全部用上

【输入】

输入文件matches.in共一行,又一个整数n(n<=24)。

输出文件matches.out共一行,表示能拼成的不同等式的数目。

【输入输出样例1】

matches.in matches.out

14 2

【输入输出样例1解释】

2个等式为0+1=1和1+0=1。

【输入输出样例2】

matches.in matches.out

9个等式为:

0+4=4

0+11=11

1+10=11

2+2=4

2+7=9

4+0=4

10+1=11

11+0=11

3. 传纸条

()

小渊和小轩是也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n)。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者向左传递。

在活动进行中,小渊希望给小轩传递一张纸条,同时希望小轩给他回复。班里每个同学都可以帮他们传递,但只会帮他们一次,也就是说如果此人在小渊递给小轩纸条的时候帮忙,那么在小轩递给小渊的时候就不会再帮忙。反之亦然。

还有一件事情需要注意,全班每个同学愿意帮忙的好感度有高有低(注意:小渊和小轩的好心程度没有定义,输入时用0表示),可以用一个0-100的自然数来表示,数越大表示越好心。小渊和小轩希望尽可能找好心程度高的同学来帮忙传纸条,即找到来回两条传递路径,使得这两条路径上同学的好心程度只和。现在,请你帮助小渊和小轩找到这样的两条路径。

【输入】

输入文件message.in的行有2个用空格隔开的整数m和n,表示班里有m行n列(1<=m,n<=50)。

接下来的m行是一个mn的矩阵,矩阵中第i行j列的整数表示坐在第i行j列的学生的好心程度。每行的n个整数之间用空格隔开。

输出文件message.out共一行,包含一个整数,表示来回两条路上参与传递纸条的学生的好心程度之和的值。

【输入输出样例】

message.in message.out

3 3

0 3 9

2 8 5

5 7 0 34

【限制】

30%的数据满足:1<=m,n<=10

的数据满足:1<=m,n<=50

4. 双栈排序

()

Tom最近在研究一个有趣的排序问题。如图所示,通过2个栈S1和S2,Tom希望借助以下4种作实现将输入序列升序排序。

作a

如果输入序列不为空,将个元素压入栈S1

作b

如果栈S1不为空,将S1栈顶元素弹出至输出序列

作c

如果输入序列不为空,将个元素压入栈S2

作d

如果栈S2不为空,将S2栈顶元素弹出至输出序列

如果一个1~n的排列P可以通过一系列作使得输出序列为1,2,…,(n-1),n,Tom就称P是一个“可双栈排序排列”。例如(1,3,2,4)就是一个“可双栈排序序列”,而(2,3,4,1)不是。下图描述了一个将(1,3,2,4)排序的作序列:

当然,这样的作序列有可能有几个,对于上例(1,3,2,4),是另外一个可行的作序列。Tom希望知道其中字典序最小的作序列是什么。

【输入】

输入文件twostack.in的行是一个整数n。

第二行有n个用空格隔开的正整数,构成一个1~n的排列。

输出文件twostack.out共一行,如果输入的排列不是“可双栈排序排列”,输出数字0;否则输出字典序最小的作序列,每两个作之间用空格隔开,行尾没有空格。

【输入输出样例1】

41 3 2 4 a b a a b b a b

【输入输出样例2】

42 3 4 1 0

【输入输出样例3】

【限制】

30%的数据满足: n<=10

50%的数据满足: n<=50

的数据满足: n<=1000

C语言(字符数组 要解释 一会补金100) 输入 n 个字符串为小写字母,按照字典序由小到大顺序输出

| | |/.

#include temp=(String) arr[j];

#include

#include

#define MAX_LEN 255

int main( )

{int strNum ;

scanf ("%d" , &strNum) ;

char str = (char)malloc(strNum sizeof (char) MAX_LEN) ;

for (int i = 0 ; i < strNum ; i++)

scanf ("%s" , str+MAX_LEN i) ;

putchar (10) ;

for (int j = 0 ; j < strNum ; j++)

printf ("%s

scanf ("%c") ;

getchar () ;

free (str) ;

return 0 ;

C语言 各位大佬帮帮忙

注意:

私---------信-----------我------------写-------------给-------------你

需要C语言入门视频教程发电子邮件至wj2017wj@126

这个我可以做{int a,b;

用Ja编写程序,对分行输入的若干字符串按字典序(由小到大)进行排序并输出。

+---+..

package special7_2;

import ja.util.;

public class Special7_2 {

public static void main(String[] args) {

// TODO Auto-generated mod stub

String str="";

Scanner scan=new Scanner(System.in);

ArrayList arraylist=new ArrayList();7+2=9

while(!str.equals("#")){

str=scan.nextLine();

arraylist.add(str);

Object[]arr=arraylist.toArray();

for(int i=0;i

//String str1=(String)arr[i];

for(int j=0;j

if(((String) arr[j])pareTo((String) arr[j+1])>0){

//swap(arr,i,j);

String temp;

arr[j]=arr[j+1];

arr[j+1]=temp;

}}

}for(int i=0;i

//String str1=(String)arr[i];

System.out.println(arr[i]);

}}

/private static void swap(Object[] arra, int i, int j) {

// TODO Auto-generated mod stub

String temp = (String) arra[i];

arra[i] = arra[j];

arra[j] = temp;

}/

求问一下 离散数学里的那个 主析取范式 和 主合取范式 的那个 最小项 项是怎么得的啊

字母表的字母按标准字典次序排序,比如 A < B < C 等等。 把一个全序限制到其全序的一个子集上。 所有的两个元素都是可比较的任何偏序 X (就是说,如果 a,b 是 X 的成员,则 a≤b 或 b≤a 中的一个为真或二者都为真)。 由基数或序数(实际上是良序)组成的任何。 如果 X 是任何,而 f 是从 X 到一个全序的单射函数,则 f 诱导出 X 上的一个全序:规定 x1 < x2 当且仅当 f(x1) < f(x2)。 设有某个集族,其成员都是用序数为索引的全序,然後把这集族上取的笛卡尔积中的有序对按字典序排序,那麽,这字典序是一全序。例如,若有一个由一些词语组成,按字母表把词语排序的话会是一全序。举个实例,我们规定bird先於cat。这可视为是向字母表加入空格符号(定义先于所有字母),得到A,然後对其自身取可数次笛卡尔积,得到Aω。bird可理解为Aω里的序对(b,i,r,d,,,...),cat则是(c,a,t,,,,...)。从而{bird,cat}成为Aω的一个子集,把Aω上的字典序限制到这字集,便得出bird)关系排序都是(严格)全序的。它们都可以被证明是带有特定性质的全序的的(在同构意义下的)最小实例(一个全序 A 被称为是带有特定性质的最小全序,即意味着只要别的全序 B 有这个性质,就有从 A 到 B 的子集的一个序同构): 自然数集是最小的没有上界的全序。 整数集是最小的没有上界也没有下界的全序。 有理数集是最小的在实数集内稠密的全序,这里的稠密性是指对于任意实数a, b,都存在有理数q使得a含n个命题变项的简单合取式(简单析取式),若每个命题变项及其否定式不同时出现,而二者之一必出现扩展资料且仅一次,且第i个命题变项或其否定式出现在左起第i位上(按字典序排列),称该简单合取式(简单析取式)为极小项(极大项)

全序关系的例子

error Lucky W游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没传出去的那个同学就是败者,要给大家表演一个节目。ord

lexicographically是什么意思

}

lexicographically

释义:a. lexicographical的变形

网络短语:

lexicographically 字典

lexicographically order in.in in.out 字典序

lexicographically sorting 排序法

lexigraphical order是什么意思

【输入输出样例2解释】

你好,为你解答,正确为:

}

lexigraphical order

字典顺序;

词典顺序;

字典序;

字典排序

祝你生活愉快,学习进步

如果你对这个有什么疑问,请追问

如果满意记得采纳哦·~~

lexi graphical order

Lexi图形命令

请采纳

如果你认可我的回答,敬请及时采纳,

~如果你认可我的回答,请及时点击【采纳为满意回答】按钮

~~手机提问的朋友在客户端右上角评价点【满意】即可。

~你的采纳是我前进的动力

~~O(∩_∩)O,记得好评和采纳,互相帮助

请详细解释一下 一下的C++代码含义

输入 只有一行 一个单词

#include

#include

using namespace std;

template//声明模板参数T.可以用T来定义函数返回值,参数类型、变量类型等所有你想要定义类型的的地方。简而言之,T就是一个类型,你给int就是int给double就是double

T 【问题描述】cmin(T a,T b)

{return (a

}char cmin(char a[],char b[])

{return (strcmp(a,b)<0?a:b); //这个是将两个字符窜按字典序比较大小,并且返回字典序小的那个字符窜

}//因为T不包含char类型,所以要重载模版函数

void main()

float c,d;

char e[20],f[20];

cout<<"请输入整数"<

cin>>a>>b;

//下面这个函数调用的是模板函数T cmin(T a, T b).此时因为给的是int类型,所以T自动关联成了int

cout<<"请输入浮点数"<

cin>>c>>d;

//下面这个函数调用的是模板函数T cmin(T a, T b).此时因为给的是float类型,所以T自动关联成了float

cout<

cout<<"请输入字符串"<

cin>>e>>f;

//下面这个函数调用的是第二个函数 char cmin(char a, char b).

cout<

数学排列组合中C和P的意思

int _strcmp (const void left , const void right){return strcmp ((char)left , (char)right) ;}

C是组合:比如ABC中选2个组合。那么AB,BA算一种组合,一共有AB,AC,BC三种组合。

P是排列:(人教版把P写成A) 比如从ABC中选两个排列,那么AB,BA算两种组合,一共有AB BA AC,CA,BC,CB六种排列。

从n个不同元素中,任取m(m≤n,m与n均为自然数)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号 cout<

扩展资料:

加法原理:做一件事,完成它可以有n类办法,在类办法中有m1种不同的方法,在第二类办法中有m2种不同的方法,……,在第n类办法中有mn种不同的方法,那么完成这件事共有N=m1+m2+m3+…+mn种不同方法。

类办法的方法属于A1,第二类办法的方法属于A2,……,第n类办法的方法属于An,那么完成这件事的方法属于A1UA2U…UAn。

C是组合 比如ABC中选2个组合 那么AB BA算一种组合 一共有AB AC BC 三种组合

P是排列(人教版把P写成A) 比如从ABC中选两个排列 那么AB BA算两种组合 一共有AB BA AC CA BC CB六种排列

是排列,与次序有关;C是组合,与次序无关。

1、排列

有限集的子集按某种条件的序化法排成列、排成一圈、不许重复或许重复等。

从n个不同元素中每次取出m(1≤m≤n)个不同元素,排成一列,称为从n个元素中取出m个元素的无重复排列或直线排列,简称排列。

搜狗问问

2、组合

从n个不同元素中每次取出m个不同元素(0≤m≤n),不管其顺序合成一组,称为从n个元素中不重复地选取m个元素的一个组合。

所有这样的组合的总数称为组合数,这个组合数的计算公式为:

搜狗问问

排列组合的难点:

1、从千万别的实际问题中抽象出几种特定的数学模型,需要较强的抽象思维能力;

2、限制条件有时比较隐晦,需要我们对问题中的关键性词(特别是逻辑关联词和量词)准确理解;

3、计算手段简单,与旧知识联系少,但选择正确合理的计算方案时需要的思维量较大;

4、计算方案是否正确,往往不可用直观方法来检验,要求我们搞清概念、原理,并具有较强的分析能力。

排列组合计算方法如下:

排列A(n,m)=n×(n-1).(n-m+1)=n!/(n-m)!(n为下标,m为上标,以下同)

组合C(n,m)=P(n,m)/P(m,m) =n!/m!(n-m)!;

例如:

A(4,2)=4!/2!=43=12

C(4,2)=4!/(2!2!)=43/(21)

C指组合P指排列

C是组合P是排列