與1共舞數字
阿新 • • 發佈:2021-02-20
技術標籤:C語言_王曉東資料結構演算法實驗題
與1共舞數字:以二進位制數表示(0或1),每個0左側必有一個1與其相鄰
例如n=3時,有101,110和111是與1共舞數字
示例輸入: 示例輸出:
1 1
3 3
#include<stdio.h>
#include<math.h>
void method (int n);
int main () {
int n;
scanf("%d", &n);
method(n);
return 0;
}
void method (int n) {
int num[(int )pow(2, n)][n], i;
for(i = 0; i < (int)pow(2, n); i ++) {
int j, temp = i;
for(j = 0; j < n; j ++) {
if(temp != 0) {
num[i][j] = temp % 2;
} else { // 補零
num[i][j] = 0;
}
temp /= 2;
}
}
int time = 0;
for(i = 0; i < (int)pow(2, n); i ++) {
int j, fault = 0;
for(j = 0; j < n; j ++) {
if(num[i][j] == 0 && num[i][j+1] == 0 || num[i][j] == 0 && j+1 == n) {
fault = 1; // 標1不符合條件
}
}
if(!fault) {
time++;
}
}
printf("%d", time);
}