第一道獨立做出來的搜索題,雖然很艱難,但畢竟是開始,祝自己早日擺脫題解
沒有難度,只有空格控制和換行需要注意。
#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; }
---恢復內容結束---