先上代码
#include <stdio.h>
int nums[10];
int i, j;
//第一个数,第二个数,第几步
void func(int x, int y, int index)
{
if (index == 6)//判断z三位数是否被标记过
{
int z = x + y;
int a = z % 10;
int b = (int)(z / 100);
int c = (int)(z / 10) % 10;
if (z > 999 || nums[a] == 1 || nums[b] == 1 || nums[c] == 1)
return;
else
{
printf("%d + %d = %d\n", x, y, x + y);
return;
}
}
else if (index < 3)//第一个数
{
for (i = 1; i < 10; i++)
if (nums[i] != 1)
{
nums[i] = 1;
func(x * 10 + i, y, index + 1);
nums[i] = 0;
}
}
else if (index < 6)//第二个数
{
for (j = 1; j < 10; j++)
if (nums[j] != 1)
{
nums[j] = 1;
func(x, y * 10 + j, index + 1);
nums[j] = 0;
}
}
}
int main(void)
{
func(0, 0, 0);
return 0;
}
编译能通过,但是没有输出,请教哪里出了问题