问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JAVA算法面试题:哪位高人会做?

发布网友 发布时间:2022-04-26 02:17

我来回答

4个回答

热心网友 时间:2022-04-09 22:04

参考一下,稍微改改就可以了。

import java.util.ArrayList;
import java.util.List;

/**
* @author ww
*
*/
public class Combination {

/**
* @param args
*/
public static void main(String[] args) {
Combination c = new Combination();
c.printAnyThree();

}
public void printAnyThree(){
int[] num = new int[]{1,2,3,4,5,6,7,8,9};
print(combine(num,6));
System.out.println(combine(num,6).size());
}

/**
* 从n个数字中选择m个数字
* @param a
* @param m
* @return
*/
public List combine(int[] a,int m){
int n = a.length;

List result = new ArrayList();

int[] bs = new int[n];
for(int i=0;i<n;i++){
bs[i]=0;
}
//初始化
for(int i=0;i<m;i++){
bs[i]=1;
}
boolean flag = true;
boolean tempFlag = false;
int pos = 0;
int sum = 0;
//首先找到第一个10组合,然后变成01,同时将左边所有的1移动到数组的最左边
do{
sum = 0;
pos = 0;
tempFlag = true;
result.add(print(bs,a,m));

for(int i=0;i<n-1;i++){
if(bs[i]==1 && bs[i+1]==0 ){
bs[i]=0;
bs[i+1]=1;
pos = i;
break;
}
}
//将左边的1全部移动到数组的最左边

for(int i=0;i<pos;i++){
if(bs[i]==1){
sum++;
}
}
for(int i=0;i<pos;i++){
if(i<sum){
bs[i]=1;
}else{
bs[i]=0;
}
}

//检查是否所有的1都移动到了最右边
for(int i= n-m;i<n;i++){
if(bs[i]==0){
tempFlag = false;
break;
}
}
if(tempFlag==false){
flag = true;
}else{
flag = false;
}

}while(flag);
result.add(print(bs,a,m));

return result;
}

private int[] print(int[] bs,int[] a,int m){
int[] result = new int[m];
int pos= 0;
for(int i=0;i<bs.length;i++){
if(bs[i]==1){
result[pos]=a[i];
pos++;
}
}
return result ;
}

private void print(List l){
for(int i=0;i<l.size();i++){
int[] a = (int[])l.get(i);
for(int j=0;j<a.length;j++){
System.out.print(a[j]+"\t");
}
System.out.println();
}
}

}

热心网友 时间:2022-04-09 23:22

就把算法给你写一下:
for(int i = 1;i<=n;i++)
for(int j = 1;j<=n;j++)
for(int k = 1;k<=n;k++)
{
if(i==j || i==k || j==k)
continue;
else
System.out.println(i*100+j*10+k);

}

热心网友 时间:2022-04-10 00:57

import java.util.*;
public class FullSort {
public void printAll(List<Integer> candidate, String prefix, int length){
if(prefix.length() == length){
System.out.print (prefix+" ");
}
for(int i=0; i<candidate.size(); i++){
List<Integer> temp = new LinkedList<Integer>(candidate);
String str = prefix+temp.remove(i);
printAll(temp, str, length);
}
}
public static void main(String[] args)
{
ArrayList<Integer> arr= new ArrayList<Integer>();
ArrayList<Integer> list = new ArrayList<Integer>();
Scanner scn=new Scanner(System.in);
System.out.println("请输入一个1~10之间的整数");
int s=scn.nextInt();
for(int i=1;i<=s;i++)
arr.add(i);

for (int i=0; i<arr.size(); i++){
list.add(arr.get(i));
}
FullSort test = new FullSort();
System.out.println("1~"+s+"的全排列如下:");
test.printAll(list, "", list.size());
}

}

热心网友 时间:2022-04-10 02:48

不算简单,主要考你排列,并且是不重复的排列,我原来有个重复排列的类,改了下给你看看。 代码如下:
(n的值你自己给,另外其实你这里这个比较简单,完全可以用数组而不用list。)
import java.util.ArrayList;
import java.util.List;

public class Test{
public static void main(String args[]){
int n=4;
int count=0;
List chars=new ArrayList();
for(int i=0;i<n;i++){
chars.add(i+1+"");
}
combination(new StringBuffer(""),n,chars);
}
public static void combination(StringBuffer str,int length,List chars) {

if (length == 1){
for(int i=0;i<chars.size();i++){
StringBuffer result = new StringBuffer(str);
if(result.indexOf(chars.get(i)+"")<0){
result.append(chars.get(i));
System.out.println(". " +result);
}
}
}
if (length > 1) {
for(int i=0;i<chars.size();i++){
StringBuffer temp = new StringBuffer(str);
if(temp.indexOf(chars.get(i)+"")<0){
combination(temp.append(chars.get(i)),length-1,chars);
}
}
}
}

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 java算法面试题 Java面试笔试,数据结构和算法考到什么程度 春季高发哪几种传染病 春天容易得什么疾病? 春天易感的传染病有哪些? 春季哪些疾病最容易发生 春季有什么疾病? 一年四季,常见那些疾病 春季幼儿常见疾病有哪些? 太全了,宝宝在春天最容易生哪些病 春天到了,春天容易生什么病 春季竟有哪些传染病? 中老年人在春天易发的疾病有哪些? 春季是疾病高发期,有哪些疾病易在春季爆发? 春季常见病都有哪些 淘宝已经极速退款了,卖家拒绝退款怎么办 长白头发了可以染发吗、、 染头发白头发上色吗? 白发可以染吗,是什么原因引起的? 百香果和鸡蛋果有什么不同 有Java面试题吗? java 算法简单面试题:要源码! Java面试算法题求解? java面试的时候可以使用API的方法么?还是自己写算法? java 问题,是面试题,谁能答出来,我觉得是高手了!不是智力题的,要用算法去实现! 蝴蝶面怎么做? 意大利蝴蝶面最简单的做法? 预算在5k-7k,想选购一支专业录音的麦克风,有没有推荐的? 用最简单的方法,怎么煮蝴蝶面 个人录音想要买设备,预算在1000以内,麦克风+声卡。求教下这个价位买什么样的麦克风好。 面家常做法,正宗蝴蝶面怎么做 用最简单的方法,怎么煮蝴蝶面。 面的做法,油炸意大利蝴蝶面怎么做好吃,油 小米mix2怎么删除短信 小米手机怎么查删去的短信? 在进行幼儿教师资*写作吋,进行语言表达与应用时应该注意哪些方面? 淘宝极速退款后货不退回去怎么办 上海象印和日本象印什么关系 象印kr和kc的区别 愿世上所有的风,都可以把你吹向我,什么意思?