[英]Generate all binary strings of length n with k bits set.(need to write on C)
[英]Printing all binary strings of length N using recursion (in c)
我需要打印所有長度為 N 的二進制字符串,從 0 到可以表示的最高數字。 我下面的代碼適用於生成所有字符串。 我遇到的問題是字符串不是按從小到大的順序排列的。
#define MAX_LENGTH 10
char binarystrings[MAX_LENGTH];
void binary(int n) {
if (n == 0) {
printf("%s\n", binarystrings);
} else {
binarystrings[n-1] = '0';
binary(n-1);
binarystrings[n-1] = '1';
binary(n-1);
}
}
int main() {
int length;
scanf("%d", &length);
binary(length);
}
當我的程序接收 3 時,它會生成:
000
100
010
110
001
101
011
111
但我需要它來生成:
000
001
010
011
100
101
110
111
我應該如何讓我的程序按正確的順序排列數字?
怎么樣printf(“%s \\ n”,strrev(binarystrings)); 反轉字符串並檢查錯誤,然后將其打印並初始化char數組以包含null可能更安全。最后,該數組不必為MAX_LENGTH +1
您正在從右到左填充binarystring
。 從左到右填充它。 為此,您需要將兩個參數(例如,位置和長度)傳遞給binary
:
void binary(int index, int length)
{
if (index == length)
return;
binarystring[index] = 0;
binary(index + 1, length);
binarystring[index] = 1;
binary(index + 1, length);
}
並將其稱為binary(0, length)
。
你可以試試我的代碼......我得到了正確模式的答案:
enter code here
#include <stdio.h>
void printBinary(int a[],int n){
for (int i=0;i<n;i++){
printf("%d",a[i]);
}
printf("\n");
}
void generateBinaryString(int n,int a[],int i){
if (i==n){
printBinary(a,n);
return;
}
a[i]=0;
generateBinaryString(n,a,i+1);
a[i]=1;
generateBinaryString(n,a,i+1);
}
int main()
{
int n;
printf("printing the binary string for n nos.");
scanf("%d",&n);
int a[n];
generateBinaryString(n,a,0);
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.