第一道獨立做出來的搜索題,雖然很艱難,但畢竟是開始,祝自己早日擺脫題解
沒有難度,只有空格控制和換行需要注意。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int flag[10], a[5], k1, k2, k;
bool found(int yu[])
{
int i;
for(i = 0; i < 10; i++)
{
if(yu[i]!=0)
return 0;
}
return 1;
}
void ax(int be)
{
int i, j;
if(found(flag))
{
if(a[0]!=k1&&k2!=0)
{
printf("\n");
}
if(a[0]==k1)
printf(" ");
for(i = 0; i < 4; i++)
printf("%d",a[i]);
k1 = a[0];
k2 = 1;
return;
}
for(i = be; i < 4; i++)
{
for(j = 0; j < 10; j++)
{
if(i==0&&j==0)
continue;
if(flag[j])
{
a[i] = j;
flag[j]--;
ax(i + 1);
flag[j]++;
}
}
}
}
int main()
{
int i, x, y, m, n;
while(scanf("%d%d%d%d", &x, &y, &m, &n),x!=0||y!=0||m!=0||n!=0)
{
if(k != 0)
printf("\n");
k = 1;
k1 = 10;
k2 = 0;
memset(flag,0,sizeof(flag));
memset(a,0,sizeof(a));
flag[x]++;
flag[y]++;
flag[n]++;
flag[m]++;
ax(0);
printf("\n");
}
return 0;
}
---恢復內容結束---