lien Sujet: http: //oj.ecustacm.cn/problem.php id = 1401?
Plus précisément regarder le code Remarque:
#include <iostream> #include <cstring> #include <vector> #include <file> #include <algorithme> en utilisant l' espace de noms std; chaîne matrice [ 15 ]; vecteur < omble > chs; int T, N, M, drapeau; vide InitData () { pour ( int i = 0 ; i < 15 ; i ++ ) { matrice [i] .clear (); } Chs.clear (); } Int main () { en (~ scanf ( " % d "et T)) { pendant que (T-- ) { scanf ( " % d% d " , et N, et M); drapeau = true ; pour ( int i = 0 ; i <N; i ++ ) { cin >> matrice [i]; } // 拿取包含的有哪些字符 vecteur < omble > :: iterator il, pour ( int i = 0 ; i <N; i ++ ) { pour (int J = 0 ; J <matrice [I] .Size (); J ++ ) { IT = Rechercher (chs.begin (), chs.end (), Matrix [I] [J]); IF (CHS == IT .end () && flag) { // pas ajouté jusqu'à ce que le caractère précédent et sont vrais (coin supérieur gauche du rectangle composé du premier caractère) chs.push_back (matrice [I] [J]); // obtenir le premier caractères // commencer la détermination et l'application d'extension droite commencent // principal détermine si tous les caractères du rectangle de caractères composé int W, H; W = H = . 1 ; int I1 = I, J1 = J; // à demande d'extension droite, la détermination de la largeur W du temps(++ J1 <&& matrice M [I] [J1] == matrice [i] [j]) {W ++ ;} // demande d'extension vers le bas, pour déterminer la hauteur H du temps (I1 ++ <N && matrice [I1] [J] == Matrice [I] [J]) {H ++ ;} // obtenir la hauteur, commencer à chercher s'il y a d' autres caractères dans le rectangle pour (I = I1; I1 <I + H; I1 ++ ) { pour ( J = J1; J1 <J + W; J1 ++ ) { SI ! (matrice [I] [J] = matrice [I1] [J1]) { flag = false ; BREAK ; } } SI(! Flag) PAUSE ; } IF (En drapeau!) PAUSE ; // s'il y a une présence du rectangle de recherche externe de ce caractère pour ( int I2 = 0 ; I2 <N; I2 ++ ) { pour ( int J2 = 0 ; J2 <matrice [I2 ] .size (); J2 ++ ) { IF ) {((I2> = I && I2 <I + H && J2> && J2 = J <J + W!) // négatif rectangulaire IF (matrice [i] [j ] == Matrice [I2] [J2]) { flag = false; briser ; } } } Si (drapeau!) De rupture ; } } Si (drapeau!) Pause ; } } Si (drapeau) { Cout << " OUI " << endl; } Autre { Cout << " NO " << endl; } InitData (); } } Retour 0 ; }
..............