hdoj1521

12126 단어 OJ
Problem : 1521(정렬 조합)     Judge Status : Accepted RunId : 2856508    Language : G++    Author : huwenbiao Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
/***************************************************************\
*Author:Hu Wenbiao
*Created Time: Sun 22 Aug 2010 09:47:05 AM CST
*File Name: main.cpp
*Description: 。 , ,
\***************************************************************/

//*========================*Head File*========================*\\

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*----------------------*Global Variable*----------------------*/
int
m,n,A[
12],B[12],C[12];
//*=======================*Main Program*=======================*//
using namespace std;

int
main(){

//freopen("input","r",stdin);
while(scanf("%d%d",&n,&m)!=EOF){
for
(int i=
1;i<=n;i++){
scanf(
"%d",A+i);//
}
memset(B,
0,sizeof(B));
memset(C,
0,sizeof(C));
for
(int i=
1;i<=n;i++){// i
for(int j=0;j<=m;j++){// ,
if(j!=0&&B[j]==0)// B[j] 0 , ,
// , j==0 , 。
continue;
for
(int k=
1;k<=A[i]&&j+k<=m;k++){// ,( 0 , )
int method=1;//
for(int s=1;s<=k;s++){
method*=(j+s);
method/=s;
}

if
(j)
C[j+k]+=method*B[j];
// method , method*B[j]
else//j==0
C[j+k]+=method;
}
}

for
(int j=
0;j<=m;j++){
B[j]+=C[j];
// , ( 0 , )
C[j]=0;
}
}

printf(
"%d
"
,B[m]);
}
}

좋은 웹페이지 즐겨찾기