Les questions de concours de programmation Huawei suivantes sont triées en ligne, et les codes sont tous débogués par vous-même. Puisqu'il y a moins de réponses à Java en ligne, tout le monde est le bienvenu pour me critiquer et me corriger. J'espère également que ce sera un peu utile aux chaussures des enfants qui se préparent à utiliser Huawei sur l'ordinateur. Grandir pendant la pratique, allez! ~~
1. Contrôle aléatoire de restauration (30 points)
Description du problème:
En raison du grand nombre de personnes dans une certaine entreprise, le déjeuner est divisé en plusieurs lots de repas, et l'heure du repas est strictement requise pour chaque lot. Et vérifiez régulièrement la situation de restauration. Veuillez rédiger un programme pour réaliser des vérifications aléatoires sur les repas.
Requis pour implémenter la fonction:
void check_LUNCH (int num, int, int, intruy [], introput [])
【Entrée】 int num, nombre total de personnes mangeant
INT TEMPS, Nombre de repas en lots
CHAR ENTRÉE [], situation culinaire
【Sortie】 Sortie char [], situation de restauration illégale
【Retour】 Aucun
Remarque: Pour la situation où la restauration est divisée en 3 lots, 12 personnes mangent, la bonne situation de restauration doit être distribuée comme suit [1, 2, 3, 1, 2, 3, 1, 2, 3]. S'il ne répond pas à cette distribution, c'est une violation et la position correspondante est 0 lors de la sortie.
Exemple
1) Entrée: num = 12, temps = 3, entrée = [1,2,3,3,1,3,1,1,1,1,2,3]
Sortie: sortie = [1,2,3,0,0,3,1,0,0,1,2,3]
2) Entrée: num = 11, temps = 4, intput = [1,2,3,4,2,3,3,4,1,2,3]
Sortie: sortie = [1,2,3,4,0,0,3,4,1,2,3]
package com.sheepmu.text; import java.util.arrays; / * * @Author SheepMu * / public class hwCompetition {public static void main (String [] args) {int num = 11, time = 4; int [] input = {1,2,3,4,2,3,3,4,1,2,3}; // int [] output = new int [] {}; int [] output = new int [num]; HwCompetition HWC = new HwComppetion (); hwc.check_lunch (num, temps, entrée, sortie); } void check_Lunch (int num, int time, int entrée [], introput []) {System.out.println (arrays.tostring (entrée)); int j = 0; pour (int i = 0; i <num; i ++) {int yushu = (i + 1)% time; if (yushu! = 0) {if (input [i] == yushu) {output [j] = yushu; } else output [j] = 0; j ++; } else {// Le cas de reste == 0 if (input [i] == time) {output [j] = time; } else output [j] = 0; j ++; }} System.out.println (arrays.tostring (sortie)); }}2. Entrez Lenovo (30 points)
Description du problème:
L'entrée de la fonction d'association est une fonction très pratique, veuillez programmer et implémenter des fonctions similaires.
Requis pour implémenter la fonction:
void auto_complete (char * str, char * tmp, char * sort)
【Entrée】 char * str, chaîne candidate
char * tmp, chaîne d'entrée
【【【】】】】】】】】】】】】】】】】】 Orth
【Retour】 Aucun
Remarque: Les chaînes candidates sont séparées par des espaces et la chaîne d'entrée ne correspond que du début de la chaîne. Sortez les sous-chaînes correspondantes, également séparées par des espaces. S'il n'y a pas de sous-chaîne qui correspond avec succès, une chaîne vide est sortie.
Exemple
1) Entrée: str = Chengdu Chongqing, TMP = C
Sortie: sortie = Chengdu Chongqing
2) Entrée: str = Chengdu Chongqing, tmp = che
Sortie: fin = Chengdu
3) Entrée: str = beijing nanjing, tmp = jing
Sortie: end =
Méthode 1:
package com.sheepmu.text; import java.util.arraylist; Importer java.util.list; / * * @Author SheepMu * / public class hwCompetition {public static void main (String [] args) {String str = "Chengdu chongqing"; String tmp = "Che"; String sutput = ""; HwCompetition HWC = new HwComppetion (); hwc.auto_complete (str, tmp, sortie); } void Auto_Complete (String Str, String tmp, String Output) {String [] strS = str.split ("// s"); List <string> list = new ArrayList <string> (); for (int i = 0; i <str.length; i ++) list.add (strs [i]); System.out.println ("List --->" + List); System.out.println ("tmp --->" + tmp); char [] tmps = tmp.tocharArray (); int len_list = list.size (); int len_t = tmps.length; pour (int j = 0; j <len_list; j ++) {int len_list_j = list.get (j) .length (); char [] list_j = list.get (j) .tocharArray (); for (int k = 0; k <len_t; k ++) {if (len_t> len_list_j) {list.remove (j); LEN_LIST -; // !!!!!!!!!!!!!!! J -; // !!!!!!!!!!!!!!!!!!!!!!!!! J -; // !!!!!!!!!!!!!!!!!!!!!!!!!!!! Si ce n'est pas le cas, il y aura un problème, car après le retrait de la taille devient 1, mais j, c'est-à-dire l'index devient 1 pause; } else {// La longueur de la température est plus petite que la longueur du câble if (tmps [k]! = list_j [k]) {list.remove (j); LEN_LIST -; // !!!!!!!!!!!!!!! J -; // !!!!!!!!! casser; }}}} // output = list.toString (); // Ce sera [Chengdu], qui aura [] if (! list.isempty ()) des deux côtés {StringBuffer sb = new StringBuffer (); sb.append ("end ="); for (String result: list) {sb.append (résultat + ""); // ajouter des espaces! ! Enfin, retirez le "" de la queue; } output = sb.toString (). Trim (); // !! } else {output = "end ="; } System.out.println (sortie); }}Méthode 2:
package com.sheepmu.text; import java.util.arraylist; Importer java.util.list; / * * @Author SheepMu * / public class hwCompetition {public static void main (String [] args) {String str = "Chengdu chongqing"; String tmp = "Che"; String sutput = ""; HwCompetition HWC = new HwComppetion (); hwc.auto_complete (str, tmp, sortie); } void Auto_Complete (String Str, String tmp, String output) {String [] strs = str.split ("// s"); // Identique ci-dessous, il ne doit être ajouté qu'avec / s, / d, etc. list <string> list = new ArrayList <string> (); for (int i = 0; i <str.length; i ++) list.add (strs [i]); System.out.println ("List --->" + List); System.out.println ("tmp --->" + tmp); int len_list = list.size (); pour (int j = 0; j <len_list; j ++) {// il y a une autre bonne méthode :! List.get (j) .startswith (tmp); !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! if (! list.get (j) .matches (tmp + "[az] *")) {// l'expression régulière est cool !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! list.remove (j); len_list--; J-; }} if (! list.isempty ()) {stringBuffer sb = new StringBuffer (); sb.append ("end ="); for (String result: list) {sb.append (résultat + ""); // ajouter des espaces! ! Enfin, retirez le "" de la queue; } output = sb.toString (). Trim (); // !! } else {output = "end ="; } System.out.println (sortie); }} 3. Problèmes de comptage agricole (20 points)
Description du problème:
On sait qu'il existe un groupe de poulets et de lapins dans une certaine ferme, avec un total de m têtes et n pieds. Calculez le nombre de poulets et de lapins au total.
Requis pour implémenter la fonction:
Public String getfowlsnum (int iheadnum, int ifootnum, arraylist ichickennum, arraylist irabbitnum)
【Entrée】 iheadnum: le nombre total d'en-têtes
ifootnum: nombre de pieds totaux [sortie] ichickennum: nombre de poulets
Irabbitnum: nombre de lapins [retour] "0": nombre de poulets et de lapins qui répondent aux exigences
"-1": aucune quantité correspondant aux exigences n'a été trouvée
Exemple
Entrée: iheadnum = 201, ifootnum = 604
Sortie: ichickennum.add (100), irabbitnum.add (101) Retour: "0"
Entrée: iheadnum = 201, ifootnum = 123
Sortie: ichickennum.add (0), irabbitnum.add (0) Retour: "-1"
package com.sheepmu.text; import java.util.arraylist; / * * @Author SheepMu * / public class hwCompetition {public static void main (String [] args) {int iheadnum = 201; int ifootnum = 604; ArrayList ichickennum = new ArrayList (); ArrayList irabbitnum = new ArrayList (); HwCompetition HWC = new HwComppetion (); hwc.GetFowlSnum (iheadnum, ifootnum, ichickennum, irabbitnum); } public String getFowlSnum (int iheadnum, int ifootnum, arrayList ichickennum, arrayList irabbitnum) {if (ifootnum% 2! = 0) {// !!! System.out.println ("ichickennum.add (0), irabbitnum.add (0)"); return "-1"; // Si le nombre de pieds est impair, il est évidemment faux,} else {int ji = 2 * iheadnum-inootnum / 2; int tui = ifootnum / 2- iheadnum; if (ji> = 0 && tui> = 0) System.out.println ("ichickennum.add (" + ji + "), irabbitnum.add (" + tui + ")"); return "0"; }}} 4. Compression de cordes (30 points)
Description du problème:
Comprimez la chaîne donnée en fonction des spécifications et sortie la chaîne compressée. Les spécifications de compression sont les suivantes: si les mêmes caractères sont continus, compressez-le en "caractères + numéro", tels que "AAAA" compressé en "A4"
Remarque: 1. Un seul caractère est comprimé en continu, si Bababa, il ne peut pas être comprimé.
2. La chaîne à comprimer ne contient pas de nombres et d'échappement des caractères.
Méthode d'implémentation requise:
Public String Compressstr (String SRCSTR) [Input] SRCSTR: La chaîne à compresser [sortie] Aucun [return] Exemple Entrée de chaîne compressée: srcstr = "aaacccddef" return: "A3C3D2EF"
Méthode 1: (Utiliser ArrayList) Voir Huawei Résumé de l'informatique Question 8
Méthode 2: (Si vous utilisez une chaîne, ceux qui ne sont pas aussi lisibles que ci-dessus devraient être familiers avec l'API)
package com.sheepmu.text; import java.util.arraylist; Importer java.util.list; / * * @Author SheepMu * / public class hwCompetition {public static void main (String [] args) {String str = "ABCDDEF"; HwCompetition HWC = new HwComppetion (); Résultat de la chaîne = hwc.compresstr (str); System.out.println (résultat); } public String compressstr (string str) {stringBuffer sb = new StringBuffer (); pour (int i = 0; i <str.length (); i ++) {if (str.length () == 0) Break; if (str.length () == 1) sb.append (str.charat (i)); // pour aaacccddef pour (int j = i + 1; j <str.length (); j ++) {if (str.charat (i) == str.charat (j)) {if (j == Streng SB.APPEND (str.length ()). APPEND (str.charat (i)); str = str.substring (j); // La longueur n'est que 0 à gauche. Doit attribuer à un nouveau STR !!!!!!!!!!!!!!!!!!!!!!!!!!!! casser; }} else {// if (j == 1) sb.append (str.charat (i)); else sb.append (j) .append (str.charat (i)); System.out.println (sb.toString ()); str = str.substring (j); je--; casser; }}} return sb.toString (); }} 5. Algorithme de tri (20 points)
Description du problème:
Le tableau entier non ordonné donné est trié par ordre décroissant et le tableau d'entrée non ordonné est n et le type est non signé
Requis pour implémenter les fonctions
void dscsort (const int inputarray [], unsigned int n, int sorputArray [])
【Entrée】 Entrée en surface: le tableau non ordonné donné
N: Longueur du tableau [sortie] OutputArray: Tri Array [RETOUR] Aucun exemple d'entrée: InputArray = {1,5,4,8,3,2,9,6,7,0}
Sortie: OutputArray = {9,8,7,6,5,4,3,2,1,0}
Méthode 1: (Appelez directement l'API) IDEA: ASCENSING ORDER ET SORTIE RERVERSEMENT
package com.sheepmu.text; import java.util.arrays; / * * @Author SheepMu * / public class hwCompetition {public static void main (String [] args) {int [] inputarray = {1,5,4,8,3,2,9,6,7,0}; int n = inputArray.length; int [] outputArray = new int [n]; HwCompetition HWC = new HwComppetion (); HWC.DSCSORT (InputArray, N, OutputArray); } void dscsort (int inputArray [], int n, int outputay []) {arrays.sort (inputArray); // ascendant int i = 0; while (- n> = 0) {outputArray [i ++] = inputArray [n]; } System.out.println (arrays.tostring (outputArray)); }}Méthode 2: (Si la question stipule que l'API ne peut pas être appelée)
package com.sheepmu.text; import java.util.arrays; / * * @Author SheepMu * / public class hwCompetition {public static void main (String [] args) {int [] inputarray = {1,5,4,8,3,2,9,6,7,0}; int n = inputArray.length; int [] outputArray = new int [n]; HwCompetition HWC = new HwComppetion (); HWC.DSCSORT (InputArray, N, OutputArray); System.out.println (arrays.toString (InputArray)); } void dscsort (int inputArray [], int n, int sorputArray []) {// Écrivez vous-même: descendant d'ordre rapide int high = 0; int bas = n-1; Trier (entrée en sural, haut, bas); } void tri (int inputarray [], int high, int low) {int i, j, temp; I = élevé; // indice haut de gamme j = Low; // Indice de faible entend Temp = InputArray [i]; // s'il vous plaît le premier élément comme élément standard. tandis que (i <j) {// la sortie récursive est faible> = haut while (i <j && temp> inputarray [j]) // le backend est plus petit que la température et se conforme à l'ordre descendant. Quoi qu'il en soit, l'indice bas est avancé j -; // après qu'il soit terminé, il se réfère à la plus grande température qui est plus grande que la température if (i <j) {inputArray [i] = inputArray [j]; i ++; } while (i <j && temp <inputArray [i]) i ++; if (i <j) {inputArray [j] = inputArray [i]; J-; }} // Alors qu'après, c'est-à-dire le premier disque de tri de disque, [i] = temp; // mette la valeur temporaire à sa position. if (high <i) // notez que le tri des valeurs d'indice (entrée-crayon, haut, i-1); // récursif pour le tableau de borne de gauche si (i <bas) // note que le tri de valeur des indices (entrée-crayon, i + 1, bas); // récursif pour le réseau terminal droit; En comparant l'exemple ci-dessus, en fait, I et J sont les mêmes que le code suivant !!!!!!!!!!!!!!! }}6. Trouvez le plus grand numéro de non-répétition (30 points)
Description du problème
S'il n'y a pas de deux chiffres consécutifs dans la même expression décimale, il est appelé "pas de numéro de répétition". Par exemple, 105, 1234 et 12121 ne sont tous «pas de numéros de répétition», tandis que 11, 100 et 1225 ne le sont pas. Étant donné un entier positif A, renvoyez le plus petit "aucun numéro de répétition" supérieur à A. A est inférieur à 100 000
Requis pour implémenter les fonctions
int getNotRepeatnum (int ivale)
【Entrée】 LVALUE: Le nombre donné renvoie le nombre minimum de non-répétition supérieur à la valeur [sortie] Aucun [Retour] Le nombre minimum de non-répétition supérieur à l'exemple ivalue Entrée: ivalue = 54
Retour: 56
Entrée: ivalue = 10
Retour: 12
Entrée: ivalue = 98
Retour: 101
Entrée: ivalue = 21099
Retour: 21201
package com.sheepmu.text; import java.util.arrays; import java.util.scanner; / * * @Author SheepMu * / public class hwCompetition {public static void main (String [] args) {Scanner input = new Scanner (System.in); int a = input.nextint (); System.out.println ("Le numéro d'entrée est ---->" + a); HwCompetition HWC = new HwComppetion (); Int result = hwc.GetNotRepeatNum (a); System.out.println ("Renvoie le nombre minimum de non-répétition supérieur à" + a + "---->" + résultat); } int getNotRepeatNum (int ivalue) {int i = 0; pour (i = ivalue + 1; i <100000; i ++) {if (! iSrepeatNum (i)) {break; // !!! Sinon, il fonctionnera plusieurs fois en vain}} return i; } public boolean isRepeatnum (int a) {String str = a + ""; char [] cs = str.tocharArray (); int len = cs.length; for (int i = 0; i <len-1; i ++) {// Parce que i + 1 est nécessaire plus tard, si c'est i <len, vous devez indiquer pour traverser les limites. if (cs [i] == cs [i + 1]) renvoie true; } return false; }} 7. Comparaison de la carte à jouer (30 points)
Description du problème:
Dans Poker, les types de cartes comprennent: A (1), 2, 3, 4, 5, 6, 7, 8, 9, T (10), J (11), Q (12), K (13), D (Devilkin), B (Belial).
Veuillez faire un programme simple, entrez les personnages de deux cartes, telles que "2" et "K", et juger de la taille de la carte. Les règles sont les suivantes:
B> d> 2> a> k> q> j> 10 ....> 3 le plus petit est 3
Règles de jugement: Comparez CFirstcard et CseCondcard. Si FirstCar est grand, retournez 1; Si le même, retournez 0; Si FirstCar est petit, retournez -1.
Requis pour implémenter la fonction:
int compareonecard (char cfirstcard, char csecondcard)
【Entrée】 char CFirstcard: la première carte qui doit être comparée
Char CseConDcard: La deuxième carte qui doit être comparée Remarque: L'entrée est les caractères 'A', '2', ..., '9', 'T', 'J', 'Q', 'K', 'D', 'B'
[Retour] Type int: Renvoyez le résultat de la comparaison de deux cartes. Remarque: La légalité de l'entrée n'est pas nécessaire, et cela est garanti par l'utilisateur de la fonction. Les cartes entrées sont toutes des personnages '1', '2'… '9', Capital 'A', 'T', 'J', 'Q', 'K', 'D', 'B'.
Par exemple:
Entrez: '4', '5', retour: -1
Entrez: '6', '6', retour: 0
package com.sheepmu.text; / * * @Author SheepMu * / public class hwCompetition {public static void main (String [] args) {char cfirstcard = '5'; char cseCondcard = '6'; HwCompetition HWC = new HwComppetion (); INT Result = hwc.compareOnecard (cFirstcard, cseCondcard); System.out.println ("résultat de la comparaison" + résultat); } int compareOnecard (char cFirstcard, char cseCondcard) {int if = getRealln (cFirstcard); System.out.println ("if --->" + if); int is = getRealln (cseCondcard); System.out.println ("Is --->" + IS); retourner si> est? 1: Si <est? -1: 0; // pas besoin d'ajouter des supports} int getRealln (char c) {int value = 0; switch (c) {case 't': value = 10; casser; case 'j': valeur = 11; casser; case 'q': valeur = 12; casser; case 'k': valeur = 13; casser; case 'a': valeur = 14; casser; Cas '2': valeur = 15; casser; case 'd': valeur = 16; casser; cas «b»: valeur = 17; casser; Case '3': Case '4': Case '5': Case '6': Case '7': Case '8': Case '9': // Value = C; // Erreur super stupide !!! Si vous entrez 9, '9' = 57 !!! La valeur du caractère 9 n'est pas le nombre 9 mais la valeur du caractère lui-même. Value = Integer.ParseInt (C + ""); casser; } RETOUR-valeur; }} 8. aperçoit (30 points)
Description du problème:
À Chengdu, un jeu de poker populaire s'appelle "Dry Staring". Les cartes à jouer sont utilisées, notamment: A (1), 2, 3, 4, 5, 6, 7, 8, 9, T (10), J (11), Q (12), K (13).
Remarque: 10 est remplacé par T, et les grands fantômes et les petits fantômes ne sont pas considérés ici pour le moment.
Les règles de taille des cartes à deux mains sont les suivantes:
a) Carte unique: 4 à 3, 5 à 4, et ce n'est que lorsque les deux cartes sont juste un peu plus grandes que vous pouvez comparer. L'ordre de comparaison est: a> k> q> j> t> 9> 8> 7> 6> 5> 4> 3.
Par exemple: 6 est supérieur à 5, mais ne peut pas être supérieur à 4, et 6 et 4 ne peuvent pas être comparés. La carte unique 2 est une carte spéciale, qui peut être comparée à toutes les autres cartes uniques ordinaires et est la plus grande.
Veuillez noter que 3, il ne peut pas être supérieur à aucune carte.
B) Paire: c'est-à-dire que les points des deux cartes sont les mêmes, les règles sont similaires à celles d'une seule carte, et un traitement similaire est également requis. Deux 2 sont des paires spéciales et peuvent être plus grandes que toutes les autres paires.
Remarque: vous ne pouvez pas comparer les cartes sub et simples.
c) Bomb: 3 cartes avec le même nombre de points. Une bombe peut être plus grande que n'importe quelle carte unique et paire. La comparaison entre les bombes n'a pas besoin d'être comme une seule carte et une paire. Il ne peut être plus grand à comparer.
Tant que les règles sont respectées: 222> aaa> kkk> qq> jjj> tt>…> 333. Autrement dit, 222 est le plus grand, l'AAA peut être supérieur à KKK ou 333.
d) Les autres règles ne sont pas prises en compte pour la mise en œuvre. Maintenant, veuillez mettre en œuvre un programme pour déterminer automatiquement la taille des cartes entre les deux mains. Remarque: les cartes entrées n'apparaîtront que dans trois types: simple, paire et bombe. Le nombre maximum d'images est de 3.
Il n'y aura pas de 2 cartes simples. Par exemple, "25", il n'y aura pas de paire plus une seule carte, comme "334", etc. Vous n'avez pas besoin de considérer des exceptions d'entrée similaires.
Cependant, PFirstcards est une seule carte et PseCondcards est une paire, et des entrées combinées similaires sont légales.
Requis pour implémenter la fonction:
int comparards (char * pfirstcards, char * psecondcards)
【Entrée】 char * pfirstcards: cartes de première main qui doivent être comparées
char * psecondcards: la seconde main qui doit être comparée [return] int type, return-valeur Description:
Si PFirstcards et PSECondcards ne peuvent pas être comparés, tels que "3" et "6"; "55" et "6", etc., retour 0.
Si PFirstcards est supérieur à PSECONDCARDS, retournez 1.
Si PFirstcards est égal à PSECONDCARDS, retournez 2.
Si PFirstcards est inférieur à PSECONDCARDS, retournez 3.
Remarque: La légalité de l'entrée n'est pas nécessaire, ceci est garanti par l'utilisateur de la fonction. Les cartes entrées sont toutes des personnages '1', '2' .. '9', Capital 'A', 'T', 'J', 'Q', 'K'.
Exemple d'entrée: "77", "33", retour: 0
Entrez: "77", "77", retour: 2
Idées: 1. 1VS2 ou 2VS1 Dans cette affaire, vous n'avez qu'à juger de la durée pour obtenir le résultat, aucune comparaison ultérieure n'est requise
2. 1VS1 ou 2 VS2 de la même manière de comparer
3. Différentes méthodes de comparaison de 3vs3 et cas 2
4. 3 vs non 3 ou non 3 VS3
package com.sheepmu.text; import java.util.arrays; / * * @Author SheepMu * / public class hwCompetition {public static void main (String [] args) {String pFirstcards = "qq"; String pseCondcards = "444"; HwCompetition HWC = new HwComppetion (); INT Result = hwc.Compards (pfirstcards, psecondcards); System.out.println ("résultat de la comparaison" + résultat); } int comparardes (String pFirstcards, String psecondcards) {int len1 = pFirstcards.length (); int len2 = psecondcards.length (); if ((Len1 == 1 && len2 == 2) || (len1 == 2 && len2 == 1)) // 1VS2, ne peut pas être comparé. Afin de fournir de l'efficacité, ceux qui peuvent être effectués en premier seront effectués, il n'est donc pas nécessaire d'exécuter la situation suivante. retour 0; int [] is1 = getReallns (pFirstcards); int [] is2 = getReallns (psecondcards); // System.out.println (arrays.tostring (is1)); // [12, 12] // system.out.println (arrays.tostring (is2)); // [4, 4, 4] if ((len1 == 1 && len2 == 1) || (len1 == 2 && len2 == 2)) {// 1vs1 ou 2vs2, Len2 == 2)) {// 1vs1 ou 2vs2, Len2 == 2)) {// 1vs1 ou 2vs2, le len2 == 2)) {// 1vs1 ou 2vs2, le len2 == 2)) {/ 1 ou 2 ou 2vs2, Len2 == 2)) {/ 1 ou 2 ou 2vs2, Len2 == 2)) ' la méthode est la même. En fait, il n'y a pas besoin de crochets si (math.abs (is1 [0] -is2 [0]) == 1) // Je sais que la longueur 2 est définitivement une paire de cas retour est1 [0] -is2 [0]> 0? 1: 3; else if (is1 [0] == is2 [0]) renvoie 2; else return 0; } if (len1 == 3 && len2 == 3) // La bombe ne peut pas être égale, car il n'y a pas de 6 cartes identiques dans un jeu. return is1 [0]> is1 [0]? 1: 3; if (len1 == 3 && len2 <3 || len1 <3 && len2 == 3) return len1 == 3? 1: 3; Retour 0; // En fait, les cas de test ne doivent jamais exécuter cette phrase. } int [] getReallns (string s) {int len = s.length (); int [] cs = new int [len]; pour (int i = 0; i <len; i ++) {cs [i] = getRealln (s.Carat (i)); } return cs; } int getRealln (char c) {int value = 0; switch (c) {case 't': value = 10; casser; case 'j': valeur = 11; casser; case 'q': valeur = 12; casser; case 'k': valeur = 13; casser; case 'a': valeur = 14; casser; Cas '2': valeur = 15; casser; Case '3': Case '4': Case '5': Case '6': Case '7': Case '8': Case '9': // Value = C; // Erreur super stupide !!! Si vous entrez 9, '9' = 57 !!! La valeur du caractère 9 n'est pas le nombre 9 mais la valeur du caractère lui-même. Value = Integer.ParseInt (C + ""); casser; } RETOUR-valeur; }} 9. Transposition matricielle (20 points)
Description du problème:
Échangez les rangées d'une matrice n * n. ・
Requis pour implémenter la fonction:
Public String MatrixTranspose (String Inarr, int n)
【Entrée】 Inarr: matrice de caractères d'entrée
N: Nombre de lignes de n * n matrice [retour] Matrice de caractères transposée Remarque:
La matrice d'entrée et de sortie est des tableaux bidimensionnels stockés sous forme unidimensionnelle. Par exemple, l'entrée est "1,2,3,4,5,6,7,8,9", qui représente en fait la matrice 3 * 3 suivante:
1,2,3,4,5,6,7,8,9
Exemple d'entrée inarr = "1,2,3,4,5,6,7,8,9", n = 3 retours: "1,4,7,2,5,8,3,6,9"
Remarque: L'auteur a ajouté artificiellement le titre à une chaîne plutôt qu'à un personnage. Les caractères sont plus simples. Faites attention à l'interception des chaînes. 13 n'est pas 1,3
Méthode 1: La matrice a été utilisée par la question. Considérez-le comme familier avec le tableau bidimensionnel
package com.sheepmu.text; import java.util.arrays; / * * @Author SheepMu * / public class hwCompetition {public static void main (String [] args) {String inarr = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16"; int n = 4; System.out.println ("inarr --->" + inarr); HwComppetition hw = new HwComppetion (); Résultat de la chaîne = hw.matrixTransspose (inarr, n); System.out.println ("Result ---->" + Result); } public String MatrixTransspose (String inarr, int n) {// Supprimez la virgule dans la chaîne, sinon la virgule sera une valeur d'indice de chaîne. Lors de la sortie, ajoutez-le String [] ss = inarr.split (","); String [] [] css = new String [n] [n]; int k = 0; pour (int i = 0; i <n; i ++) {// convertir la chaîne en un tableau bidimensionnel pour (int j = 0; j <n; j ++) {css [i] [j] = ss [k]; k ++; }} StringBuffer sb = new StringBuffer (); pour (int i = 0; i <n; i ++) {// 2d tableau inverse pour (int j = 0; j <n; j ++) {sb.append (css [j] [i] + ","); // il y a une autre queue,}} return sb.substring (0, sb.Length () - 1); }} Méthode 2: plus simple, aucune matrice requise du tout.
package com.sheepmu.text; import java.util.arrays; / * * @Author SheepMu * / public class hwCompetition {public static void main (String [] args) {String inarr = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16"; int n = 4; System.out.println ("inarr --->" + inarr); HwComppetition hw = new HwComppetion (); Résultat de la chaîne = hw.matrixTransspose (inarr, n); System.out.println ("Result ---->" + Result); } public String MatrixTransspose (String inarr, int n) {// Supprimez la virgule dans la chaîne, sinon la virgule sera également une valeur d'indice de chaîne. Lors de la sortie, ajoutez-le string [] ss = inarr.split (","); StringBuffer sb = new StringBuffer (); pour (int i = 0; i <n; i ++) {// pour l'exemple de question: l'ordre des indices requis est le 036147258 pour (int j = i; j <ss.length; j + = n) {sb.append (ss [j] + ","); // il y a une virgule sur la tail}} return sb.subString (0, Sb.Length (1); virgule}} 10. Les réverbères (20 points)
Les rues d'une capitale provinciale sont sillonnantes. Afin de surveiller le fonctionnement des réverbères, chaque rue utilise une chaîne numérique pour identifier le fonctionnement de tous les réverbères dans la rue.
Supposons que le réverbère n'a que les trois états suivants (identifiés par les nombres 0, 1, 2, respectivement, et un réverbère ne correspond qu'à l'un des États):
0 Le voyant du panneau est éteint;
1 Le réverbère est allumé;
2 Identifier la défaillance du réverbère;
Veuillez trouver le nombre maximal de réverbères consécutifs dans le même état dans la rue en fonction de la chaîne entrée. Si le nombre de réverbères dans les deux États est le même, le premier état de réverbère sera retourné.
Entrez une chaîne d'État composée de réverbères continus dans la rue. La chaîne ne contient que des nombres, et l'état de chaque réverbère est l'un des 0, 1 et 2. Par exemple, "1101" représente 4 lampadaires, le troisième réverbère est à l'état de l'extérieur, et les 3 autres sont dans l'état de l'on.
Le nombre maximal de réverbères qui sont en continu dans le même état est la production;
L'état des réverbères ci-dessus;
Exigences: Éprenez d'abord la quantité, puis émettez l'état et utilisez un intervalle d'espace entre les deux entiers. Par exemple la sortie:
53 2
Échantillon d'entrée
112200111
Échantillon de sortie
3 1
package com.sheepmu.text; import java.util.arrays; / * * @Author SheepMu * / public class hwCompetition {public static void main (String [] args) {String S = "112001110"; // Ce type de question doit prêter attention à toutes les mêmes situations à la fin, c'est-à-dire qu'il n'y a pas de différent à nouveau, sinon il est facile d'avoir un cycle mort. System.out.println ("inarr --->" + s); HwComppetition hw = new HwComppetion (); Résultat de la chaîne = hw.ludeng (s); System.out.println ("Résultat de la question ---->" + Résultat); } public String Ludeng (String S) {// Supprime la virgule dans la chaîne, sinon la virgule est également une valeur d'indice de chaîne. Lors de la sortie, ajoutez-le car [] as = s.tocharArray (); int len = as.length; int maxc = 1; // int mubiaobindex = 0; // ne créez pas de variables supplémentaires // int mubiaovalue = as [0]; int bindEx = 0; // Si vous avez besoin de retourner l'indice de premier indice consécutif, alors 6 à ce moment; Si la question a cette exigence: définissez ensuite deux variables: le nombre de fois "par pièce" + le premier indice qui apparaît. CHAR VALEUR = AS [0]; // Si la question doit renvoyer la valeur de la partie maximale de longueur, c'est-à-dire 1 de l'état de cette question pour (int i = 0; i <len-1;) {int count = 1; // chaque boucle extérieure est de définir le nombre sur 1 et de démarrer un nouveau comte bindEx = i; valeur = comme [i]; for (int j = i + 1; j <len; j ++) {if (as [i]! = as [j]) {i = j; casser; } else {i ++; // !!!!!!!!!!!! Si aucune différence n'apparaît par la suite; Si cette phrase n'est pas ajoutée, la boucle extérieure sera exécutée tout le temps. Count ++; }} if (count> maxc) {maxc = count; // mubiaobindex = bindEx; // mubiaovalue = valeur; System.out.println ("maxc --->" + maxc + "Démarrer l'indice ---->" + bindEx + "Status ---->" + valeur); }} StringBuffer sb = new StringBuffer (); return sb.append (maxc + "") .append (value) .toString (); }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.