Le plus simple est d'énumérer de manière exhaustive les arrangements de 9 nombres.
Un point d'optimisation est d'abord d'éliminer certaines situations impossibles. Par exemple, le nombre du milieu est un multiple de 2 et le dernier nombre est un multiple de 3. Et ainsi de suite.
public static void main(String[] args) {
int[] s = new int[9];
for (int i = 300; i < 999; i+=3) {
int flag = 1;
Set<Integer> set = new HashSet<>();
int a = i / 3;
int b = (i / 3) * 2;
s[0]=a%10;s[1]=a%100/10;s[2]=a/100;
s[3]=b%10;s[4]=b%100/10;s[5]=b/100;
s[6]=i%10;s[7]=i%100/10;s[8]=i/100;
for (int i1 : s) {
if (!set.add(i1) || i1 == 0) {
flag = 0;
break;
}
}
if (flag == 1) {
System.out.println(a + "\t" + b + "\t" + i);
}
}
}
Énumérez le premier nombre, qui est le nombre représentant 1 sur 1:2:3.
La plage d'énumération est de 123 à 345. Sur la base de ce nombre, calculez les deux autres nombres, puis déterminez si exactement 9 nombres sont utilisés.
L'idée est très simple. Puisque vous voulez que le rapport soit de 1:2:3 et que chaque nombre doit être utilisé une fois, agrandissez directement 1, 2 et 3 de x fois, puis déterminez si chaque nombre apparaît. une seule fois. 1 nécessite moins de 100 fois de grossissement pour atteindre 3 chiffres, il suffit donc de commencer à partir de 123. Le code est le suivant. int testa() {
http://blog.csdn.net/houyp520...
Le plus simple est d'énumérer de manière exhaustive les arrangements de 9 nombres.
Un point d'optimisation est d'abord d'éliminer certaines situations impossibles. Par exemple, le nombre du milieu est un multiple de 2 et le dernier nombre est un multiple de 3. Et ainsi de suite.
Écrivez simplement la récursion. . Ou est-ce que cela s'appelle une itération ?
cours public Sidney {
}
Question de Liu Rujia.
Énumérez le premier nombre, qui est le nombre représentant 1 sur 1:2:3.
La plage d'énumération est de 123 à 345. Sur la base de ce nombre, calculez les deux autres nombres, puis déterminez si exactement 9 nombres sont utilisés.
L'idée est très simple. Puisque vous voulez que le rapport soit de 1:2:3 et que chaque nombre doit être utilisé une fois, agrandissez directement 1, 2 et 3 de x fois, puis déterminez si chaque nombre apparaît. une seule fois. 1 nécessite moins de 100 fois de grossissement pour atteindre 3 chiffres, il suffit donc de commencer à partir de 123. Le code est le suivant.
int testa()
{
}