#include <stdio.h> #include <malloc.h> #include <math.h> int tenToTwo(int, int *); int main(void) { int n, i, j, k,a; scanf("%d", &n); for (i = 0; i < n; i++) { int count = 0; scanf("%d", &n); int *pArr = (int *)malloc(n * sizeof(int)); for (j = 0; j < pow(2, n); j++) { //赋初值 for (a = 0; a < n; a++) pArr[a] = 0; tenToTwo(j, pArr);//十进制转二进制 for (k = n - 1; k > 0; k--) { if (pArr[k] == 1 && pArr[k - 1] == 1) break; } if (k == 0) count++; } printf("Scenario #%d:\n", i+1); printf("%d\n", count); if (i != n - 1) printf("\n"); free(pArr); } return 0; } int tenToTwo(int n, int *pArr) { int i = 0; while (n > 0) { pArr[i] = n % 2; i = i + 1; n = n / 2; } return 0; } |
Double click to view unformatted code.