OJ 求硬币组合数
来源:互联网 发布:客服数据分析怎么做 编辑:程序博客网 时间:2024/09/21 09:25
public static int calculateChanges(String coinTypes){final int totleMoney = 1000;int totlceChangesNum = 0;//1 正确性校验//1.1 必须有且只有2个逗号int sep1 = -1;int sep2 = -1;int sep3 = -1;sep1 = coinTypes.indexOf(',');//必须有1个逗号并且第一个的位置不是在0if(sep1 == -1 ||sep1 == 0){return -1;}else{//必须有第2个逗号 并且第2个的位置不能在末尾sep2 = coinTypes.indexOf(',' , sep1 + 1);//System.out.println("sep2 is " + sep2);if(sep2 == -1 || sep2 == sep1 + 1 || sep2 == coinTypes.length() -1){return -1;}else{sep3 = coinTypes.indexOf(',' , sep2 + 1);//如果有3个以上的逗号if(sep3 != -1){return -1;}}}//1.2 校验只有2个逗号通过后校验数字正确性String [] inputString = coinTypes.split(",");int [] inputInt = new int[3];for(int i =0; i < inputString.length; i++){inputInt[i] = Integer.parseInt(inputString[i]);//校验数字正确性if(inputInt[i] != 1 && inputInt[i] != 2 && inputInt[i] != 5 && inputInt[i] != 10 && inputInt[i] != 50 && inputInt[i] != 100 ){return -1;}}//按升序排列Arrays.sort(inputInt);//1.3 校验数字重复性if(inputInt[0] == inputInt[1] ||inputInt[1] == inputInt[2] ){return -1;}//2 计算排列个数//2.1 保存计算每个数字的最大可能数量int [] inputMaxNum = new int [3];for(int i = 0; i < 3 ; i++){inputMaxNum[i] = totleMoney / inputInt[i];}//2.2 计算总体组合数量for(int i = 1; i < inputMaxNum[0]; i ++){//除去最大的数后的剩余最大次数for(int j = 1; j < inputMaxNum[1];j ++){//除去两次后的最大次数for(int k = 1; k < inputMaxNum[2] ; k ++){if(inputInt[0] * i + inputInt[1] * j + inputInt[2] * k == 1000){totlceChangesNum++;}}}}return totlceChangesNum;}
0 0
- OJ 求硬币组合数
- CCI 9.8 硬币组合数
- zzuli OJ 1100: 求组合数(函数专题)
- OJ硬币组合数量的分析
- 南阳OJ 组合数
- C++求组合数
- 求组合数
- 求组合数算法
- C++求组合数
- 求组合数
- C++求组合数
- 求组合数
- 求组合数
- 求组合数
- 求组合数!!!
- 求字符串组合数
- 求组合数
- 求组合数--char4
- redis 命令行工具 redic-cli 可以直接操作读和写,不需要登陆
- 利用SynchronizationContext.Current在线程间同步上下文
- Reinforcement Learning——Different Policies
- [DP]LIS+LCS+最大连续子段和
- 第13周项目1-动物这样叫(2)
- OJ 求硬币组合数
- Linux内核与驱动开发学习总结:原子操作实现(六)
- My First Blog,It's my Start!
- 文章标题
- JNDI介绍
- Storm入门之附录A
- LPC1788--SSP设置驱动W25Q16--以及特别注意点
- [DP][NOIP2004] 合唱队形
- Linux内核与驱动开发学习总结:内核访问外设IO.map_desc和ioremap(七)