View Code of Problem 60

#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.


Back to problem 60