Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<iostream>#include<string>using namespace std;int a[10], b[10], c[10];int get_dou(int p[10]) {int cnt = 0;for(int i = 1; i <= 9; ++i)if(p[i] == 4) cnt += 2;else if(p[i] >= 2) cnt++;return cnt;}int get_tri(int p[10], int k) {if(k == 10) return 0;if(p[k] == 0) return get_tri(p, k + 1);if(k >= 8) {if(p[k] >= 3) return get_tri(p, k + 1) + 1;else return get_tri(p, k + 1);}int cnt = 0, tmp;if(p[k] >= 3) {p[k] -= 3;tmp = get_tri(p, k) + 1;p[k] += 3;cnt = cnt > tmp ? cnt : tmp;}if(p[k + 1] != 0 && p[k + 2] != 0) {p[k] -= 1; p[k + 1] -= 1; p[k + 2] -= 1;tmp = get_tri(p, k) + 1;p[k] += 1; p[k + 1] += 1; p[k + 2] += 1;