博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
整数变换
阅读量:6040 次
发布时间:2019-06-20

本文共 2258 字,大约阅读时间需要 7 分钟。

原创


整数变换问题:整数i的两种变换定义为,(向下取整);设计一个算法求给定两个整数a和b,用最少次数的和变换将整数a变换为b;

例如:4=gfgg(15)

这道题目有两种情况,一种是有解,即n可以通过函数变换成m;另一种是无解,即n无法通过函数变换成m。

第一种情况比较容易,即只需要判断最后的x是否等于m即可。如果x等于m,那么说明n已经被变换成m了,递归返回。

第二种情况,如果在递归的过程,出现了前面计算过的元素,那就说明n是无法转换成m的。

用回溯法解决整数变换问题,用子集树。

import java.util.Scanner;import java.util.ArrayList;class chang{    private int a;    private int bestdept=200;    private int track[]=new int[21];    private int besttrack[]=new int[21];    private ArrayList list=new ArrayList();    private boolean flag=false;    public chang(int a,int b){        this.a=a;        list.add(a);    }    public boolean judge(int a){        for(int i=0;i
20 || t>bestdept){ //最大步数为200 return; } if(m==n){ bestdept=t-1; for(int i=1;i<=20;i++){ besttrack[i]=track[i]; } flag=true; return; } for(int i=1;i<=2;i++){ //1代表f,2代表g if(i==1){ if(judge(m*3)){ list.add(m*3); track[t]=i; atob(m*3,n,t+1); track[t]=0; //回溯 list.remove(list.size()-1); } }else{ if(judge(m/2)){ list.add(m/2); track[t]=i; atob(m/2,n,t+1); track[t]=0; list.remove(list.size()-1); } } } } public void outPut(){ if(flag==true){ for(int i=20;i>=1;i--){ if(besttrack[i]==0){ continue; }else if(besttrack[i]==1){ System.out.print("f"); }else if(besttrack[i]==2){ System.out.print("g"); } } }else{ System.out.println("no solution"); } System.out.print("("+a+")"); }}public class changInt { public static void main(String[] args) { Scanner reader=new Scanner(System.in); int a=reader.nextInt(); int b=reader.nextInt(); chang ch=new chang(a,b); ch.atob(a,b,1); ch.outPut(); }}

18:35:20

2018-11-11

转载于:https://www.cnblogs.com/chiweiming/p/9942946.html

你可能感兴趣的文章
FLIR推出多款热成像和可见光安防摄像机,发布United VMS重大更新
查看>>
当最难管理的律师遇上量化大数据
查看>>
海尔家居旗下企业定义智能家居3.0+,浩思智慧力推Xgo-有狗
查看>>
中国大数据市场的特点与发展趋势
查看>>
云时代数据安全才是真正的安全 —— 天空卫士 副总裁 巩文坚
查看>>
高清NVR在中小规模视频监控系统中的应用特点
查看>>
世纪互联牵手阿里云 数据中心全面升级混合云部署
查看>>
微软和Linux:真正的浪漫还是有毒的爱情?
查看>>
大数据如何影响社交媒体指标和Facebook广告策略
查看>>
宁夏助“云”升腾正当时
查看>>
云安全企业ObsidianSecurity获A轮融资950万美元
查看>>
德国数据中心服务公司T-Systems获BayernLB等超1亿欧元融资
查看>>
看Google怎样玩转可再生能源
查看>>
乌云停摆危机幕后:“正面黑客”究竟是什么人?
查看>>
ARM同IMEC展开合作:推动7nm芯片工艺发展
查看>>
三星出局 传台积电独家代工苹果未来两代A10、A11芯片
查看>>
传输技术大跃进!物联网市场今年破兆
查看>>
沃达丰2017年商用NB-IoT技术 核心网和无线网升级开始
查看>>
概念火热 智能家居究竟是否值得改装?
查看>>
华为年报透露员工收入:2016年平均薪酬近60万
查看>>