solution.cpp 690 字节
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
#include <stdio.h>
#include <stdbool.h>

int ans = 0;
int nums[10];
bool visited[10];

void judge()
{
	int i;
	if (nums[0] + (double)nums[1] / nums[2] + (double)(nums[3] * 100 + nums[4] * 10 + nums[5]) / (nums[6] * 100 + nums[7] * 10 + nums[8]) == 10)
	{
		printf("%d + %d/%d + %d%d%d/%d%d%d", nums[0], nums[1], nums[2], nums[3], nums[4], nums[5], nums[6], nums[7], nums[8]);
		printf("\n");
		ans++;
	}
}
void dfs(int index)
{
	if (index >= 9)
	{
		judge();
		return;
	}
	int i;
	for (i = 1; i < 10; i++)
	{
		if (visited[i] == false)
		{
			visited[i] = true;
			nums[index] = i;
			dfs(index + 1);
			visited[i] = false;
		}
	}
}
int main()
{
	dfs(0);
	printf("%d\n", ans);
	return 0;
}