[IOI1994] reloj - Buscar

Considerar dispuestos en nueve \ (3 \ times 3 \) de reloj de la matriz, cada reloj apuntará a \ (3,6,9,12 \) puntos. Hay \ (9 \) modos de funcionamiento, cada modo de funcionamiento de su conjunto operación objeto fijo predeterminado, estos son una parte posterior de línea de reloj pocos \ (3 \) h. Cada operación tiene un número digital. secuencia lexicográfico de operaciones para el mínimo punto de que todo reloj \ (12 \) puntos.

Solución

Cada uno de la serie de operaciones realizadas no es mayor que \ (3 \)

Se obtiene por la secuencia de operación de las operaciones de multiset

Enumerar la violencia obtener varios conjuntos

#include <bits/stdc++.h>
using namespace std;

int a[10];

signed main() {
    for(int i=1;i<=9;i++) cin>>a[i], a[i]/=3;
    for(int i1=0;i1<=3;i1++)
    for(int i2=0;i2<=3;i2++)
    for(int i3=0;i3<=3;i3++)
    for(int i4=0;i4<=3;i4++)
    for(int i5=0;i5<=3;i5++)
    for(int i6=0;i6<=3;i6++)
    for(int i7=0;i7<=3;i7++)
    for(int i8=0;i8<=3;i8++)
    for(int i9=0;i9<=3;i9++) {
        if((a[1]+i1+i2+i4)%4) continue;
        if((a[2]+i1+i2+i3+i5)%4) continue;
        if((a[3]+i2+i3+i6)%4) continue;
        if((a[4]+i1+i4+i5+i7)%4) continue;
        if((a[5]+i1+i3+i5+i7+i9)%4) continue;
        if((a[6]+i3+i5+i6+i9)%4) continue;
        if((a[7]+i4+i7+i8)%4) continue;
        if((a[8]+i5+i7+i8+i9)%4) continue;
        if((a[9]+i6+i8+i9)%4) continue;
        while(i1--) cout<<1<<" ";
        while(i2--) cout<<2<<" ";
        while(i3--) cout<<3<<" ";
        while(i4--) cout<<4<<" ";
        while(i5--) cout<<5<<" ";
        while(i6--) cout<<6<<" ";
        while(i7--) cout<<7<<" ";
        while(i8--) cout<<8<<" ";
        while(i9--) cout<<9<<" ";
        return 0;
    }
}

Supongo que te gusta

Origin www.cnblogs.com/mollnn/p/12470780.html
Recomendado
Clasificación