首页 > 其他 > 详细

POJ 1496

时间:2014-09-25 21:24:09      阅读:140      评论:0      收藏:0      [点我收藏+]

看见discuss 上说买一送一,果然是这样的。与POJ 1850相同--!

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string.h>
using namespace std;

int M[30][30];
char s[30];
int num[30];

void initial(){
	memset(M,0,sizeof(M));
	for(int i=0;i<=26;i++)
	M[i][0]=1;
	for(int i=1;i<=26;i++){
		for(int j=1;j<=i;j++){
			if(j==1){
				M[i][j]=i;
			}
			else {
				M[i][j]=M[i][j-1]*(i-j+1)/j;
			}
		}
	}
}

int main(){
	initial();
	while(scanf("%s",s)!=EOF){
		int len=strlen(s);
		for(int i=1;i<=len;i++)
		num[i]=s[i-1]-‘a‘+1;
		num[0]=0;
		bool flag=true;
		for(int i=1;i<=len;i++)
		if(num[i]<=num[i-1]){
			flag=false;
			break;
		}
		if(!flag){
			printf("0\n");
			continue;
		}
		int pos=0;
		for(int i=1;i<len;i++)
		pos+=M[26][i];
		for(int i=1;i<=len;i++){
			for(int k=num[i-1]+1;k<num[i];k++){
				pos+=(M[26-k][len-i]);
			}
		}
		printf("%d\n",pos+1);
	}
	return 0;
}

  

POJ 1496

原文:http://www.cnblogs.com/jie-dcai/p/3993588.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!