Следующие вопросы о конкурсе программирования Huawei отсортированы в Интернете, и все коды отлаживаются сами. Поскольку на Java Online меньше ответов на Java, все могут критиковать и исправить меня. Я также надеюсь, что это будет немного полезно для детской обуви, которые готовятся использовать Huawei на компьютере. Расти во время практики, давай! ~~
1. Столовая случайная проверка (30 баллов)
Описание проблемы:
Из -за большого количества людей в определенной компании, обед делится на несколько партий блюд, а время еды строго требуется для каждой партии. И регулярно проверяйте ситуацию с обедом. Пожалуйста, напишите программу для достижения случайных проверок на обед.
Необходимо для реализации функции:
void check_lunch (int num, int time, int input [], int output [])
【Ввод】 int num, общее количество людей едят
Int Time, количество блюд в партиях
char input [], ситуация с обедом
【Вывод】】 char input [], незаконная ситуация с обедом
【Вернуть】 Нет
Примечание. Для ситуации, когда ужина разделена на 3 партии, 12 человек едят, правильная ситуация с обедом должна быть распределена следующим образом [1, 2, 3, 1, 2, 3, 1, 2, 3]. Если он не соответствует этому распределению, это нарушение, а соответствующая позиция составляет 0 при выходе.
Пример
1) Вход: num = 12, время = 3, вход = [1,2,3,3,1,3,1,1,1,1,2,3]
Вывод: выход = [1,2,3,0,0,3,1,0,0,1,2,3]]
2) Вход: num = 11, время = 4, интакт = [1,2,3,4,2,3,3,4,1,2,3]
Вывод: выход = [1,2,3,4,0,0,3,4,1,2,3]
пакет com.sheepmu.text; импортировать 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,1,2,3}; // int [] output = new int [] {}; int [] output = new int [num]; Hwcompetition hwc = new hwcompetition (); hwc.check_lunch (num, время, вход, вывод); } void check_lunch (int num, int time, int input [], int output []) {system.out.println (arrays.tostring (input)); int j = 0; для (int i = 0; i <num; i ++) {int yushu = (i+1)%времени; if (yushu! = 0) {if (input [i] == yushu) {output [j] = yushu; } else output [j] = 0; J ++; } else {// случай оставшегося == 0 if (input [i] == time) {output [j] = время; } else output [j] = 0; J ++; }} System.out.println (Arrays.tostring (output)); }}2. Введите Lenovo (30 баллов)
Описание проблемы:
Ввод функции ассоциации является очень практической функцией, программируйте и реализуйте аналогичные функции.
Необходимо для реализации функции:
void auto_complete (char *str, char *tmp, char *output)
【Ввод】 char *str, string кандидата
char *tmp, входная строка
【Вывод】 int *output, сопоставление строк для ассоциации
【Вернуть】 Нет
ПРИМЕЧАНИЕ. Строки кандидатов разделены пространствами, а входная строка соответствует только началу строки. Вывод соответствующих подстроков, также разделенных пространствами. Если нет подстроения, которая успешно соответствует, пустая строка выводится.
Пример
1) Ввод: Str = Chengdu Chongqing, TMP = c
Вывод: выход = Чэнду Чунцин
2) Ввод: Str = Chengdu Chongqing, TMP = CHE
Вывод: END = Чэнду
3) Ввод: Str = Пекин Нанкин, TMP = Jing
Вывод: END =
Метод 1:
пакет com.sheepmu.text; импортировать java.util.arraylist; импортировать java.util.list; / * * @author sheepmu */ public class hwcompetition {public static void main (string [] args) {string str = "chengdu chongqing"; String tmp = "che"; String output = ""; Hwcompetition hwc = new hwcompetition (); hwc.auto_complete (str, tmp, output); } void auto_complete (string str, string tmp, string output) {string [] strs = str.split ("// s"); List <string> list = new ArrayList <string> (); для (int i = 0; i <strs.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; for (int j = 0; j <len_list; j ++) {int len_list_j = list.get (j) .length (); char [] list_j = list.get (j) .tchararray (); for (int k = 0; k <len_t; k ++) {if (len_t> len_list_j) {list.remove (j); len_list-; // !!!!!!!!!!!!!!! J-; // !!!!!!!!!!!!!!!!!!!!!!!!! j-; // !!!!!!!!!!!!!!!!!!!!!!!!!!!! Если это не так, будет проблема, потому что после удаления размера становится 1, но j, то есть, индекс становится 1 разрыв; } else {// Длина температуры меньше длины кабеля if (tmps [k]! = list_j [k]) {list.remove (j); len_list-; // !!!!!!!!!!!!!!! J-; // !!!!!!!!! перерыв; }}}} // output = list.toString (); // Это будет [chengdu], который будет иметь [] if (! list.isempty ()) с обеих сторон {Stringbuffer sb = new StringBuffer (); sb.append ("end ="); для (строка результата: список) {sb.append (result+""); // Добавить пространства! ! Наконец, удалите «» хвоста; } output = sb.toString (). trim (); // !! } else {output = "end ="; } System.out.println (output); }}Метод 2:
пакет com.sheepmu.text; импортировать java.util.arraylist; импортировать java.util.list; / * * @author sheepmu */ public class hwcompetition {public static void main (string [] args) {string str = "chengdu chongqing"; String tmp = "che"; String output = ""; Hwcompetition hwc = new hwcompetition (); hwc.auto_complete (str, tmp, output); } void auto_complete (string str, string tmp, string output) {string [] strs = str.split ("// s"); // То же, что и ниже, его следует добавить только с/s,/d и т. Д. для (int i = 0; i <strs.length; i ++) list.add (strs [i]); System.out.println ("list --->"+list); System.out.println ("tmp --->"+tmp); int len_list = list.size (); for (int j = 0; j <len_list; j ++) {// Есть еще один хороший метод :! list.get (j) .startswith (tmp); !!!!!!!!!!!!!!!!!!!!!!!!!!!!! if (! list.get (j) .matches (tmp+"[az]*")) {// Регулярное выражение круто !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! list.remove (j); len_list--; J--; }} if (! list.isempty ()) {stringBuffer sb = new StringBuffer (); sb.append ("end ="); для (строка результата: список) {sb.append (result+""); // Добавить пространства! ! Наконец, удалите «» хвоста; } output = sb.toString (). trim (); // !! } else {output = "end ="; } System.out.println (output); }} 3. Проблемы с подсчета фермы (20 баллов)
Описание проблемы:
Известно, что на определенной ферме есть группа цыплят и кроликов, в общей сложности головы и n ног. Рассчитайте, сколько цыплят и кроликов в общей сложности.
Необходимо для реализации функции:
public String getfowlsnum (int iheadnum, int ifootnum, Arraylist Ichickennum, Arraylist Irabbitnum)
【Ввод】 Iheadnum: общее количество заголовков
ifootnum: количество общих футов
Irabbitnum: количество кроликов [return] "0": количество цыплят и кроликов, которые соответствуют требованиям
«-1»: не было найдено количество требований.
Пример
Ввод: iheadnum = 201, ifootnum = 604
Вывод: ichickennum.add (100), irabbitnum.add (101) return: "0"
Ввод: iheadnum = 201, ifootnum = 123
Вывод: ichickennum.add (0), irabbitnum.add (0) return: "-1"
пакет com.sheepmu.text; импортировать 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 hwcompetition (); 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)"); вернуть "-1"; // Если количество футов нечетное, это, очевидно, неправильно,} else {int ji = 2*iheadnum-ifootnum/2; int tui = ifootnum/2- iheadnum; if (ji> = 0 && tui> = 0) system.out.println ("ichickennum.add ("+ji+"), irabbitnum.add ("+tui+")"); вернуть "0"; }}} 4. Сжатие строки (30 баллов)
Описание проблемы:
Сжатие данной строки в соответствии со спецификациями и выводит сжатую строку. Технические характеристики сжатия: если те же символы непрерывны, то сжимайте его к «символу + номер», например, «AAAA», сжатый к «A4»
Примечание: 1. Только один символ сжимается непрерывно, если Бабаба, его нельзя сжать.
2. Строка для сжатия не содержит чисел и экономных символов.
Требуемый метод реализации:
public String compressstr (String srcstr) [input] srcstr: строка для сжатия [output] none [return] Пример ввода сжатой строки: srcstr = "aaacccddef" return: "a3c3d2ef"
Метод 1: (Использование ArrayList) См. Huawei Computer Crewarmary Вопрос 8
Метод 2: (если вы используете строку, те, кто не так читабелен, как выше, должны быть знакомы с API)
пакет com.sheepmu.text; импортировать java.util.arraylist; импортировать java.util.list; / * * @author sheepmu */ public class hwcompetition {public static void main (string [] args) {string str = "abcddef"; Hwcompetition hwc = new hwcompetition (); String result = hwc.compressstr (str); System.out.println (результат); } public String compressstr (String str) {StringBuffer sb = new StringBuffer (); for (int i = 0; i <str.length (); i ++) {if (str.length () == 0) break; if (str.length () == 1) sb.append (str.charat (i)); // для aaacccddef for (int j = i+1; j <str.length (); j ++) {if (str.charat (i) == str.charat (j)) {if (j = str.lengh sb.append (str.length ()). Append (str.charat (i)); str = str.substring (j); // Длина только 0 слева. Должен назначить новой Str !!!!!!!!!!!!!!!!!!!!!!!!!!!! перерыв; }} 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); я--; перерыв; }}} return sb.toString (); }} 5. Сортировка алгоритма (20 баллов)
Описание проблемы:
Данный неупорядоченный целочисленный массив сортируется в порядке убывания, а входной массив - n, а тип не знаком
Требуется для реализации функций
void dscsort (const int inputarray [], unsigned int n, int outputArray [])
【Ввод】 inputArray: данный неупорядоченный массив
n: длина массива [output] outputArray: сортировка массива [return] Нет примера ввода: inputArray = {1,5,4,8,3,2,9,6,7,0}
Вывод: outputArray = {9,8,7,6,5,4,3,2,1,0}}}}}}
Метод 1: (непосредственно вызовать API) Идея: порядок повышения и вывод обратно
пакет com.sheepmu.text; импортировать 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 hwcompetition (); hwc.dscsort (inputarray, n, outputArray); } void dscsort (int inputArray [], int n, int outputArray []) {arrays.sort (inputArray); // Восходящий int i = 0; while (-n> = 0) {outputArray [i ++] = inputArray [n]; } System.out.println (Arrays.toString (outputArray)); }}Метод 2: (если вопрос предусматривает, что API не может быть вызван)
пакет com.sheepmu.text; импортировать 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 hwcompetition (); hwc.dscsort (inputarray, n, outputArray); System.out.println (Arrays.toString (inputArray)); } void dscsort (int inputArray [], int n, int outputArray []) {// Напишите себя: спуск быстрого порядка int high = 0; int low = n-1; сортировка (inputarray, высокий, низкий); } void sort (int inputArray [], int high, int low) {int i, j, temp; i = High; // Высокопроницаемый Suppript j = low; // Низко-эндоспособный suppript temp = inputArray [i]; // Пожалуйста, первым элементом в качестве стандартного элемента. while (i <j) {// рекурсивный выход низкий> = высокий, в то время как (i <j && temp> inputArray [j]) // Бэкэнд меньше температуры, и соответствует порядку убывания. Независимо от этого, низкий индекс перемещается вперед j-; // после его завершения, он относится к большей температуре, которая больше, чем температура, если (i <j) {inputarray [i] = inputArray [j]; i ++; } while (i <j && temp <inputArray [i]) i ++; if (i <J) {inputArray [j] = inputArray [i]; J--; }} // whe After, то есть первая диск сортировка inputArray [i] = temp; // Поместите значение температуры в его положение. if (high <i) // Обратите внимание, что сортировка значений подростка (inputArray, High, i-1); // рекурсивное для массива левой клеммы if (i <low) // Обратите внимание, что сортировка значений подростка (inputArray, i+1, low); // рекурсивность для правой клеммы; Сравнивая приведенный выше пример, на самом деле, я и J такие же, как следующий код !!!!!!!!!!!!!!! }}6. Найдите самый большой номер без повторения (30 баллов)
Описание проблемы
Если в одном и том же десятичном выражении нет двух цифр, это называется «без повторного номера». Например, 105, 1234 и 12121 - все «нет чисел повторения», а 11, 100 и 1225 - нет. Учитывая положительное целое число A, верните наименьшее «без повторного номера» больше, чем A. A составляет менее 100 000
Требуется для реализации функций
int getNotrePeatNum (int ialue)
【Ввод】 LVALUE: заданное число возвращает минимальное не повторное число, превышающего значение [Вывод] Нет [return] Минимальный незащитный номер больше, чем вход IVALUE: Ivalue = 54
Возврат: 56
Ввод: Ivalue = 10
Возврат: 12
Ввод: Ivalue = 98
Возврат: 101
Ввод: IVELUE = 21099
Возврат: 21201
пакет com.sheepmu.text; импортировать java.util.arrays; импортировать 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 («Входной номер-->»+a); Hwcompetition hwc = new hwcompetition (); int result = hwc.getnotrepeatnum (a); System.out.println («Возвращает минимальное не повторное число больше, чем"+a+"---->"+result); } int getNotRepeatNum (int Ivalue) {int i = 0; for (i = Ivalue+1; i <100000; i ++) {if (! IsrepeatNum (i)) {break; // !!! В противном случае он будет работать много раз в направлении}} return i; } public boolean isrepeatNum (int a) {string str = a+""; char [] cs = str.thararray (); int len = cs.length; для (int i = 0; i <len-1; i ++) {// Потому что i+1 необходим позже, если это i <len, вы должны подписаться, чтобы пересечь границы. if (cs [i] == cs [i+1]) вернуть true; } вернуть false; }} 7. Сравнение игровой карты (30 очков)
Описание проблемы:
В покере типы карт включают в себя: A (1), 2, 3, 4, 5, 6, 7, 8, 9, T (10), J (11), Q (12), K (13), D (Devilkin), B (Belial).
Пожалуйста, сделайте простую программу, введите символы двух карт, таких как «2» и «K», и оцените размер карты. Правила следующие:
B> d> 2> a> k> q> j> 10 ....> 3
Правила суждения: Сравните Cfirstcard и Csecondcard. Если Firstcar большой, верните 1; Если то же самое, вернуть 0; Если Firstcar маленький, верните -1.
Необходимо для реализации функции:
int compareonecard (char cfirstcard, char csecondcard)
【Ввод】 char cfirstcard: первая карта, которую нужно сравнить
char csecondcard: вторая карта, которую нужно сравнить, Примечание: Вход - это символы «a», '2', ..., '9', 't', 'j', 'q,' k ',' d ',' b '
[Return] int type: вернуть результат сравнения двух карт. ПРИМЕЧАНИЕ: законность ввода не требуется, и это гарантируется пользователем функции. Введенные карты - все персонажи «1», «2»… '9', капитал 'a', 't', 'j', 'q', 'k', 'd', 'b'.
Например:
Введите: '4', '5', return: -1
Введите: '6', '6', return: 0
пакет com.sheepmu.text; / * * @author sheepmu */ public class hwcompetition {public static void main (string [] args) {char cfirstcard = '5'; char csecondcard = '6'; Hwcompetition hwc = new hwcompetition (); int result = hwc.compareonecard (cfirstcard, csecondcard); System.out.println («Результат сравнения»+результат); } int compareonecard (char cfirstcard, char csecondcard) {int if = getRealln (cfirstcard); System.out.println ("if --->"+ if); int is = getRealln (csecondcard); System.out.println ("is --->"+ is); вернуть, если> есть? 1: Если <есть? -1: 0; // Нет необходимости добавлять кронштейны} int getRealln (char c) {int value = 0; Switch (c) {case 't': value = 10; перерыв; case 'J': value = 11; перерыв; case 'Q': value = 12; перерыв; case 'k': value = 13; перерыв; case 'a': value = 14; перерыв; случай '2': значение = 15; перерыв; case 'D': значение = 16; перерыв; case 'b': значение = 17; перерыв; случай '3': case '4': case '5': case '6': case '7': case '8': case '9': // value = c; // Супер глупая ошибка !!! Если вы введете 9, '9' = 57 !!! Значение символа 9 - это не число 9, а значение самого символа. value = integer.parseint (c+""); перерыв; } return value; }} 8. Проблемен (30 баллов)
Описание проблемы:
В Чэнду популярная покерная игра называется «сухой уставитой». Используются игровые карты, в том числе: A (1), 2, 3, 4, 5, 6, 7, 8, 9, T (10), J (11), Q (12), K (13).
Примечание: 10 заменяется T, и большие призраки и маленькие призраки не рассматриваются здесь на данный момент.
Правила размера для двух ручных карт следующие:
а) Одно карта: от 4 до 3, от 5 до 4, и только когда две карты немного больше, вы можете сравнить. Порядок сравнения: a> k> q> j> t> 9> 8> 7> 6> 5> 4> 3.
Например: 6 больше 5, но не может быть больше 4, а 6 и 4 нельзя сравнивать. Single Card 2 - это специальная карта, которую можно сравнить со всеми другими обычными отдельными картами и является самой большой.
Обратите внимание, что 3, это не может быть больше, чем любая карта.
б) Пара: то есть точки двух карт одинаковы, правила аналогичны таковым у одной карты, и также требуется аналогичная обработка. Два 2 - это специальные пары и могут быть больше, чем все другие пары.
Примечание: вы не можете сравнить саб и отдельные карты.
в) Бомба: 3 карты с тем же количеством очков. Бомба может быть больше, чем любая карта и пара. Сравнение между бомбами не должно быть похоже на одну карту и пару. Это может быть больше для сравнения.
Пока правила соблюдены: 222> AAA> KKK> QQ> JJJ> TT>…> 333. То есть 222 является крупнейшим, AAA может быть больше, чем KKK или 333.
г) Другие правила не рассматриваются для реализации. Теперь, пожалуйста, реализуйте программу для автоматического определения размера карт в обеих руках. Примечание: введенные карты появятся только в трех типах: одиночный, пара и бомба. Максимальное количество изображений 3.
Там не будет 2 одиночных карт. Например, «25», не будет пары плюс ни одной карты, такой как «334» и т. Д. Вам не нужно рассматривать аналогичные входные исключения.
Тем не менее, Pfirstcards - это одна карта, а Psecondcards - пара, а аналогичные комбинации являются законными.
Необходимо для реализации функции:
Сравнение Int (char *pfirstcards, char *psecondcards)
【Ввод】 char *spirstcards: карты из первых рук, которые необходимо сравнить
char *psecondcardcards: вторая рука, которую нужно сравнить
Если нельзя сравнивать открытки и PSECONDCARD, такие как «3» и «6»; "55" и "6" и т. Д., Возврат 0.
Если открытки больше, чем psecondcers, верните 1.
Если открытки равны PSecondCards, верните 2.
Если открытки меньше, чем psecondcardcards, верните 3.
ПРИМЕЧАНИЕ: законность ввода не требуется, это гарантируется пользователем функции. Введенные карты - все персонажи «1», «2» .. '9', Capital 'a', 't', 'J', 'q', 'k'.
Пример ввода: "77", "33", возврат: 0
Введите: "77", "77", возврат: 2
Идеи: 1. 1VS2 или 2VS1 В этом случае вам нужно только судить о длине, чтобы получить результат, последующее сравнение не требуется
2. 1VS1 или 2 VS2 То же самое, чтобы сравнить
3. Различные методы сравнения 3VS3 и случай 2
4. 3 против не 3 или не 3 против3
пакет com.sheepmu.text; импортировать java.util.arrays; / * * @author sheepmu */ public class hwcompetition {public static void main (string [] args) {string pfirstcards = "qq"; String psecondcards = "444"; Hwcompetition hwc = new hwcompetition (); int result = hwc.comparecards (pfirstcards, psecondcards); System.out.println («Результат сравнения»+результат); } int comparcards (строки pfirstcards, string psecondcards) {int len1 = pfirstcards.length (); int len2 = psecondcards.length (); if ((len1 == 1 && len2 == 2) || (len1 == 2 && len2 == 1)) // 1vs2, нельзя сравнить. Чтобы обеспечить эффективность, будут выполнены сначала, поэтому нет необходимости выполнять следующую ситуацию. возврат 0; int [] is1 = getReallns (pfirstcards); int [] is2 = getReallns (psecondcards); // System.println (Arrays.toString (IS1)); // [12, 12] // System.out.println (Arrays.toString (iS2)); // [4, 4, 4] if ((len1 == 1 && len2 == 1) || (Len1 == 2 && len2 == 2) {//1V1. Метод такой же. Фактически, нет необходимости в скобках, если (math.abs (is1 [0] -IS2 [0]) == 1) // Я знаю, что длина 2-это определенно пара случаев возврата IS1 [0] -IS2 [0]> 0? 1: 3; иначе if (is1 [0] == is2 [0]) return 2; иначе вернуть 0; } if (len1 == 3 && len2 == 3) // Бомба не может быть равна, потому что в колоде нет 6 идентичных карт. возврат IS1 [0]> IS1 [0]? 1: 3; if (len1 == 3 && len2 <3 || len1 <3 && len2 == 3) вернуть len1 == 3? 1: 3; Возврат 0; // Фактически, тестовые случаи никогда не должны выполнять это предложение. } int [] getReallns (string s) {int len = s.length (); int [] cs = new int [len]; for (int i = 0; i <len; i ++) {cs [i] = getRealln (s.charat (i)); } вернуть CS; } int getRealln (char c) {int value = 0; Switch (c) {case 't': value = 10; перерыв; case 'J': value = 11; перерыв; case 'Q': value = 12; перерыв; case 'k': value = 13; перерыв; case 'a': value = 14; перерыв; случай '2': значение = 15; перерыв; случай '3': case '4': case '5': case '6': case '7': case '8': case '9': // value = c; // Супер глупая ошибка !!! Если вы введете 9, '9' = 57 !!! Значение символа 9 - это не число 9, а значение самого символа. value = integer.parseint (c+""); перерыв; } return value; }} 9. Матрица транспонировать (20 баллов)
Описание проблемы:
Смены ряды N*n матрицы. ・
Необходимо для реализации функции:
public String Matrixtranspose (String inarr, int n)
【Ввод】 inarr: матрица ввода символов
n: количество рядов матрицы n*n [return] транспонированная матрица символов Примечание:
Входная и выходная матрица представляют собой двумерные массивы, хранящиеся в одномерной форме. Например, ввод «1,2,3,4,5,6,7,8,9», который фактически представляет следующую матрицу 3*3:
1,2,3,4,5,6,7,8,9
Пример ввода inarr = "1,2,3,4,5,6,7,8,9", n = 3 возврата: "1,4,7,2,5,8,3,6,9"
ПРИМЕЧАНИЕ. Автор искусственно добавил заголовок к строке, а не к персонажу. Персонажи проще. Обратите внимание на перехват строк. 13 не 1,3
Метод 1: Матрица использовалась вопросом. Просто подумайте об этом как знакомы с двумерным массивом
пакет com.sheepmu.text; импортировать 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); Hwcompetition hw = new hwcompetition (); String result = hw.matrixtranspose (inarr, n); System.out.println ("Результат ---->"+Результат); } public String MatrixTranspose (String inarr, int n) {// Удалить запятую в строке, в противном случае запятая будет значением индекса строки. При выводе добавьте его string [] ss = inarr.split (","); String [] [] css = new String [n] [n]; int k = 0; for (int i = 0; i <n; i ++) {// преобразовать строку в двумерный массив для (int j = 0; j <n; j ++) {css [i] [j] = ss [k]; K ++; }} StringBuffer sb = new StringBuffer (); for (int i = 0; i <n; i ++) {// 2d массив, обратный для (int j = 0; j <n; j ++) {sb.append (css [j] [i]+","); // Есть еще один хвост,}} return sb.substring (0, sb.length ()-1); }} Метод 2: Проще, матрица вообще не требуется.
пакет com.sheepmu.text; импортировать 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); Hwcompetition hw = new hwcompetition (); String result = hw.matrixtranspose (inarr, n); System.out.println ("Результат ---->"+Результат); } public String MatrixTranspose (String inarr, int n) {// Удалить запятую в строке, в противном случае запятая также будет значением индекса строки. При выводе добавьте его string [] ss = inarr.split (","); StringBuffer sb = new StringBuffer (); для (int i = 0; i <n; i ++) {// Для вопроса Пример: требуемый порядок подписки-036147258 для (int j = i; j <ss.length; j+= n) {sb.append (ss [j]+","); // На съемках lement at}} return sb.substring (0, sb. запятая}} 10. Уличные огни (20 очков)
Улицы в столице провинции пересекаются. Чтобы контролировать работу уличных фонарей, на каждой улице используется числовая строка для определения работы всех уличных фонарей на улице.
Предположим, что уличный свет имеет только следующие три состояния (идентифицированные числами 0, 1, 2 соответственно, а уличный свет соответствует только одному из состояний):
0 Высокий уличный свет выключен;
1 Уличный свет включен;
2 определить неудачу уличного света;
Пожалуйста, найдите максимальное количество последовательных уличных огней в том же штате на улице на основе введенной строки. Если количество уличных фонарей в обоих штатах одинаково, будет возвращено первое Street Light State.
Введите государственную строку, состоящую из непрерывных уличных огней на улице. Строка содержит только числа, а состояние каждого уличного света является одним из 0, 1 и 2.
Максимальное количество уличных фонарей, которые непрерывно находятся в том же состоянии, это вывод;
Статус вышеуказанных уличных огней;
Требования: сначала выводит количество, затем выводит статус и используйте пространственный интервал между двумя целыми числами. Например, вывод:
53 2
Пример ввода
112200111
Выбор вывода
3 1
пакет com.sheepmu.text; импортировать java.util.arrays; / * * @author sheepmu */public class hwcompetition {public static void main (string [] args) {string s = "112001110"; // Этот тип вопроса должен обратить внимание на все одинаковые ситуации в конце, то есть, то есть не отличается от него снова, в противном случае легко иметь мертвый цикл. System.out.println ("inarr --->"+s); Hwcompetition hw = new hwcompetition (); String result = hw.ludeng (ы); System.out.println ("Результат вопроса ---->"+result); } public String ludeng (String s) {// Удалить запятую в строке, в противном случае запятая также является значением индекса строки. При выводе добавьте его char [] as = s.tochararray (); int len = as.length; int maxc = 1; // int mubiaobindex = 0; // Не создавать дополнительные переменные // int mubiaovue = as [0]; int bindex = 0; // Если вам нужно вернуть самый большой последовательный первый индекс, затем 6 в это время; Если вопрос имеет это требование: тогда установите две переменные: количество раз «на часть» + первый появляется первый индекс. char value = as [0]; // Если вопрос должен вернуть значение максимальной части длины, то есть 1 из состояния этого вопроса для (int i = 0; i <len-1;) {int count = 1; // Каждый внешний цикл должен установить счет в 1 и начать новый count bindex = i; value = as [i]; for (int j = i+1; j <len; j ++) {if (as [i]! = as [j]) {i = j; перерыв; } else {i ++; // !!!!!!!!!!!! Если впоследствии не появляется ничего другого; Если это предложение не будет добавлено, внешний цикл будет выполняться все время. count ++; }} if (count> maxc) {maxc = count; // mubiaobindex = bindex; // mubiaovule = value; System.out.println ("maxc --->"+maxc+"start subscript ---->"+bindex+"status ---->"+value); }} StringBuffer sb = new StringBuffer (); return sb.append (maxc+"") .append (value) .toString (); }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.