java学习笔记3-带分数全排列(未完成)
2021/4/8 1:08:35
本文主要是介绍java学习笔记3-带分数全排列(未完成),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
带分数
试题 带分数
问题描述
100 可以表示为带分数的形式:100 = 3 + 69258 / 714。
还可以表示为:100 = 82 + 3546 / 197。
注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。
类似这样的带分数,100 有 11 种表示法。
输入格式
从标准输入读入一个正整数N (N<1000*1000)
输出格式
程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。
注意:不要求输出每个表示,只统计有多少表示法!
样例输入1
100
样例输出1
11
样例输入2
105
样例输出2
6
代码①(全排列):
import java.util.Scanner; public class 带分数 { private static Scanner sc; private static int n,result; public static void main(String[] args) { sc = new Scanner(System.in); n = sc.nextInt(); sc.close(); int[] data= {1,2,3,4,5,6,7,8,9};//九个数的排列方法 allsort(data,0); System.out.println(result); } private static void allsort(int[] data, int i) { // TODO Auto-generated method stub if(i==data.length) { for(int j=1;j<data.length;j++) { //对挑选出来的k-j个数字进行组合枚举出来,枚举三个,然后拿这三个书进行带分数公式来检验 for(int k=j+1;k<data.length;k++) {//在每种整数占位方法的基础上,列举分数的占位方法 int pre=split(data,0,j); int mid=split(data,j,k); int fon=split(data,k,9); if(mid%fon!=0) //如果分数值已经大于输入数据,后面占位方法也肯定是大于的,直接结束 continue; if(pre+mid/fon==n)//如果结果与输入数据相等,有效排列+1 result++; } } return; } for(int j=i;j<data.length;j++) { int temp=data[j]; data[j]=data[i]; data[i]=temp; allsort(data,i+1);//递归 temp=data[j]; data[j]=data[i]; data[i]=temp; } } private static int split(int[] data, int j, int k) {//列举所有全排列 // TODO Auto-generated method stub int num=0; for(int i=j;i<k;i++) { num=data[i]+num*10; } return num; } }
全排列:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
解法1(递归)
解法2(字典序法)
解法参考:https://blog.csdn.net/u013309870/article/details/68941284
这篇关于java学习笔记3-带分数全排列(未完成)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?