Manual gama completa matriz automáticamente

/ * 
手动:再交换交换
自动: next_permutation
* /

#include <iostream> #include <string> #include <sstream> #include <algoritmo> #include <cstring> using namespace std; int ans = 0; cheque int (int a []) { si (a [0] -a [4] == - 1 || a [0] -a [4] == 1) return 0; si (a [3] -a [4] == - 1 || a [3] -a [4] == 1) return 0; si (a [5] -a [4] == - 1 || a [5] -a [4] == 1) return 0; si (a [7] -a [4] == - 1 || a [7] -a [4] == 1) return 0; si (a [8] -a [4] == - 1 || una [8] -a [4] == 1) return 0; si (a [9] -a [4] == - 1 || a [9] -a [4] == 1) return 0; si (a [1] -a [4] == - 1 || a [1] -a [4] == 1) return 0; si (a [1] -a [5] == - 1 || a [1] -a [5] == 1) return 0; si (a [8] -a [7] == - 1 || una [8] -a [7] == 1) return 0; return 0; si (a [1] -a [6] == - 1 || a [1] -a [6] == 1) return 0; si (a [0] -a [5] == - 1 || a [0] -a [5] == 1) return 0; si (a [2] -a [5] == - 1 || a [2] -a [5] == 1) return 0; si (a [8] -a [5] == - 1 || una [8] -a [5] == 1) return 0; si (a [9] -a [5] == - 1 || a [9] -a [5] == 1) return 0; si (a [6] -a [5] == - 1 || a [6] -a [5] == 1) return 0; si (a [6] -a [9] == - 1 || a [6] -a [9] == 1) return 0; si (a [6] -a [2] == - 1 || a [6] -a [2] == 1) return 0; si (a [3] -a [0] == - 1 || a [3] -a [0] == 1) return 0; si (a [3] -a [7] == - 1 || a [3] -a [7] == 1) si (a [8] -a [3] == - 1 || una [8 ] -a [3] == 1) volver 0; si (a [9] -a [8] == - 1 || a [9] -a [8] == 1) return 0; si (a [1] -a [0] == - 1 || a [1] -a [0] == 1) return 0; si (a [1] -a [2] == - 1 || a [1] -a [2] == 1) return 0; } //手动全排列 void f (k int, int a []) { //出口 si (k == 10) { si (cheque (a) = 0) { ans ++; } Devolver; } For (int i = k; i <10; ++ i) { {int temp = a [k]; un [k] = a [i]; a [i] = temp;} //深入 f (k + 1, a); {int temp = a [k]; un [k] = a [i]; a [i] = temp;} //回溯 } } i2s void (int x, string & basic_string) { ss stringstream; ss << x; ss >> basic_string; } S2i vacío (string & basic string, int & x) { stringstream ss; ss << basic_string; ss >> X; } C2i vacío (char y basic_string, int & x) { stringstream ss; ss << basic_string; ss >> X; } C2s void (char c, string & s) { corriente stringstream; transmitir << c; s = stream.str (); } //自动全排列 void f1 (cadena s, int a []) { do { for (int i = 0; i <10; ++ i) { int temp; // temps de cuerda; // C2S (s [i], temps); // S2I (temps, Temp); a [i] = temp; } Cheque (a); } while (next_permutation (s.begin (), s.end ())); } Int main () { // int a [10] = {0,1,2,3,4,5,6,7,8,9}; // f (0, a); int a [10]; string s = "0123456789"; F1 (s, a); ans tribunal << << endl; }

  

Supongo que te gusta

Origin www.cnblogs.com/Stephen-Jixing/p/12628305.html
Recomendado
Clasificación