我正在开展一个涉及“动态编程”的项目,我对这个微不足道的事情感到震惊,请帮忙。
假设我将4作为输入,我想显示如下内容:0000到1111
但是,如果我输入5,我想显示如下:00000到11111等等。
提前致谢,
编辑:请不要发帖询问我代码。这不是一个家庭作业问题,我不需要任何代码,只需告诉我它的逻辑,我会很高兴。
EDIT2 :正在使用Stackoverflow进行WTH,我是否要求您为我编写代码?我希望那个投票赞成它的人。如果我不能帮忙,这个论坛有什么意义?
与我分享逻辑。我们可以讨论,但我不需要代码。
EDIT3 :我在这里发布了我尝试过的代码。我希望所有认为我没有尝试任何东西的人“满意”。
import java.util.ArrayList;
public class RegularInvestigator {
public ArrayList createCombinations(ArrayList listOfFlightNumbers){
ArrayList<String> result = new ArrayList<String>();
for(int i = 1; i < listOfFlightNumbers.size(); i++) {
String binaryEqvivalent = Integer.toBinaryString(i);System.out.println(binaryEqvivalent);
String element = "";
for(int j = 0; j < binaryEqvivalent.length(); j++)
if(binaryEqvivalent.charAt(j) == '1')
element += listOfFlightNumbers + " ";
result.add(element.substring(0, element.length() - 1));
}
return result;
}
private String getContent(ArrayList<String> flight) {
String temp = "";
for(int i = 0; i < flight.size() - 1; i++) temp += flight.get(i) + " ";
temp += flight.get(flight.size() - 1);
return temp;
}
private ArrayList removeElementAtIndex(ArrayList flight,int position){
ArrayList<String> res = new ArrayList<String>();
for(int i = 0; i < flight.size(); i++) {
if(i != position) res.add(flight.get(i));
}
return res;
} }
EDIT4 :谢谢phoxis,PengOne,Jerry Coffin和oliholz的宝贵答案:)
答案 0 :(得分:8)
n
i=0
到(2^n) - 1
i
位掩码i
的每个值并显示。答案 1 :(得分:8)
public void outBinary(int value){
for (int i = 0; i < Math.pow(2, value); i++) {
System.out.println(Integer.toBinaryString(i));
}
}
带有类似的前导零
for (int i = 0; i < Math.pow(2, value); i++) {
StringBuilder binary = new StringBuilder(Integer.toBinaryString(i));
for(int j = binary.length(); j < value; j++) {
binary.insert( 0, '0' );
}
System.out.println(binary);
}
答案 2 :(得分:4)
要么使用phoxis非常好的解决方案,要么只是按字典顺序迭代它们(这实际上是相同的解决方案!):给定给定长度的二进制字符串,通过找到最右边的零条目获取下一个字典字符串,将其更改为a 1
,并将其右侧的所有内容更改回0
,例如
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
答案 3 :(得分:1)
我对你如何应用动态编程感到有些迷茫。这只是计数从0到1小于指定的最大值(其中最大值为1左移指定的位数)。
编辑:我应该补充一点,还有其他可能性(例如,格雷码)但没有其他理由不这样做,简单的二进制计数可能是最简单的实现。
答案 4 :(得分:0)
int x = 5;
for(int i = 0; i < (1 << x); i++){
System.out.println(Integer.toBinaryString(i));
}
答案 5 :(得分:0)
这里的代码是找到组合
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package rotateimage;
/**
*
* @author ANGEL
*/
public class BinaryPermutaion {
public static void main(String[] args) {
//object creation
BinaryPermutaion binaryDigit=new BinaryPermutaion();
//Recursive call of the function to print the binary string combinations
binaryDigit.printBinary("", 4);
}
/**
*
* @param soFar String to be printed
* @param iterations number of combinations
*/
public void printBinary(String soFar, int iterations) {
if(iterations == 0) {
System.out.println(soFar);
}
else {
printBinary(soFar + "0", iterations - 1);
printBinary(soFar + "1", iterations - 1);
}
}
}