第一次做csdn的编程挑战赛

原创 2013年12月03日 15:24:22

回文字符串

题目详情:

回文字符串是指从左到右和从右到左相同的字符串,现给定一个仅由小写字母组成的字符串,你可以把它的字母重新排列,以形成不同的回文字符串。


输入:非空仅由小写字母组成的字符串,长度不超过100;

输出:能组成的所有回文串的个数(因为结果可能非常大,输出对1000000007取余数的结果)。


例如:输入"aabb" 输出为2(因为“aabb”对应的所有回文字符串有2个:abba和baab)


函数头部

c:

int palindrome(const char *s);

c++

int palindrome(const string &s);

java

public static int palindrome(String s) ;

主要就是使用概率中个排列组合的内容,已经测试得到恨到的数,不产生溢出..提交没成功
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class palindrome {
	public static void main(String []args){
		try
		{
		System.out.println("请输入少于100个的小写字母组成的字符串!");	
		String s="";
		BufferedReader in=new BufferedReader (new InputStreamReader(System.in));
		s=in.readLine();
		palindrome p=new palindrome();
		int num=p.palindrome(s);
		System.out.println("能组成的回文数为"+num);
		}catch (Exception e){};
		
		
	}
	public static int palindrome(String s){
		int n=0;
		long mun=0,rep = 1;
		int[] zm=new int[26];
		char[] str=new char[100];
		for(int i=0;i<26;i++){
			zm[i]=0;
		}
		for(int i=0;i<s.length();i++){
		str[i]=s.charAt(i);
		int t=str[i]-'a';
		zm[t]++;
		}
		for(int j=0;j<26;j++){
			if((zm[j]%2)==1){n++;}
			
		}
		if(n>1){
		return 0;
		}
		else{
			int m=s.length()/2;
			for(int k=0;k<26;k++){
				rep=rep*jieceng(zm[k]/2);
			}
			try {
				mun=jieceng(m)/rep;
				return (int) (mun%1000000007);
			} catch (ArithmeticException e) {
				// TODO: handle exception
				return 1;
			}
				
		}
		
	}
	public static long jieceng(int n){
		if(n==0){return 1;}
		else {
			long m=1;
			for(int i=1;i<=n;i++){
				m*=i;
			}
			return m;
		}
	}
}

2017华为软件精英挑战赛思路分析

声明:这篇博客仅用于(zhang)交(fang)流(wen)学(liang)习,让大家更快的熟悉赛题,不会涉及到具体的算法细节,所以不会影响到前排同学的排名,请不用担心。题目大意有一个无向网络,网路的...
  • mmy1996
  • mmy1996
  • 2017年03月21日 15:59
  • 11839

[算法]CSDN编程挑战赛之整数取反

今天看了一下庞果网发布的编程挑战赛,我就做了一题目,结果却让我失望,没提交的上去,也不知道是网速原因还是什么,一直处于提交状态,然后我就没理它,一直耗到时间结束,但最后我发现,竟然记我一个挑战失败,好...
  • s10141303
  • s10141303
  • 2013年12月21日 20:59
  • 2395

第三届阿里中间件性能挑战赛 初赛记录及源码分享

初赛:《基于Open-Messaging实现进程内消息引擎》 我们手里有程序demo,有大部分的接口,主要需要实现,创建消息,发送消息,创建消费的信息,消费对象。 本地有一个单线程和多线程程...
  • u011299745
  • u011299745
  • 2017年06月05日 11:17
  • 776

2014年CSDN编程挑战赛 - 检查交替字符串

package csdnChallenge; /** * 2014年 CSDN 编程挑战赛,题目如下 * 如果字符串str3能够由str1和str2中的字符按顺序交替形成, * 那么称str3为...
  • linfeng24
  • linfeng24
  • 2014年04月06日 13:51
  • 642

第一次实战项目的收获

上次学术交流会上,师哥说每次做项目都是的最好的锻炼的机会,在锻炼中自会从思想上、技术上获得更快、更多的提高。我相信这句话!...
  • suneqing
  • suneqing
  • 2014年03月25日 23:51
  • 2005

Wannafly挑战赛5 D.子序列 组合数学

https://www.nowcoder.com/acm/contest/36/D 因为无论T串为何样,长串一定能构造出以T串为模板的串,也就是T串无论为何样,其实只是看T串的长度的影响...
  • qq_36553623
  • qq_36553623
  • 2017年12月09日 00:25
  • 84

2016 微软编程之美复赛题目中文翻译

微软学术图谱(Microsoft Academic Graph ,MAG)是一个大型的,丰富多样的图,其包括的内容如:作者、论文、期刊、会议、以及上述实体之间的关系。微软为本次比赛提供了学术知识API...
  • archimekai
  • archimekai
  • 2016年04月26日 17:56
  • 2208

Wannafly挑战赛3 部分题解

Wannafly挑战赛3   前天晚上的比赛,今天阴差阳错把2015 四川省赛B题读成了本场C题题意,结果全场在补题,结束才发现读题出了偏差,索性把C也补了吧。 A.珂朵莉  期望...
  • NYIST_TC_LYQ
  • NYIST_TC_LYQ
  • 2017年11月12日 20:42
  • 147

阿里巴巴中间件性能挑战赛(MOM篇)

先贴一下赛题: 实现一个基于发布-订阅模型的消息中间件(broker+client) 必选特性: 提供可靠消息服务,broker要保证数据同步落盘才能向生产者返回发送成功的ack,并保证投递给所有的...
  • qq_20962553
  • qq_20962553
  • 2015年09月26日 17:08
  • 1348

CSDN挑战赛 - 素因子集合

/**题目:小强最近在学初等数论,老师给他们出了一个课后习题, * 那就是给你两个正整数A,B(0...
  • linfeng24
  • linfeng24
  • 2014年04月13日 20:57
  • 664
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第一次做csdn的编程挑战赛
举报原因:
原因补充:

(最多只允许输入30个字)