找规律
数字里面最大到7,3个一组,所以只能是1 2 4,或者1 2 6,以及1 3 6 。只要出现5或者7,就不行;然后再考虑1,2,3,4,6之间的个数关系就行。
AC代码:
#include <stdio.h>
int main() {
int a[8], i, x, n;
while(scanf("%d",&n)!=EOF) {
memset(a, 0, sizeof(a));
for(i=1; i<=n; i++) {
scanf("%d", &x);
a[x]++;
}
if(a[5] || a[7]) {
printf("-1\n");
continue;
}
if(a[1]!=n/3) {
printf("-1\n");
continue;
}
if(a[3]+a[4]>n/3) {
printf("-1\n");
continue;
}
if((a[2]-a[4])!=(a[6]-a[3])) {
printf("-1\n");
continue;
}
for(i=0; i<a[4]; i++) printf("1 2 4\n");
for(i=0; i<n/3-a[3]-a[4]; i++) printf("1 2 6\n");
for(i=0; i<a[3]; i++) printf("1 3 6\n");
}
return 0;
}