다음 Huawei 프로그래밍 경쟁 질문은 온라인으로 정렬되며 코드는 모두 직접 디버깅됩니다. Java Online에 대한 답변이 적기 때문에 모든 사람들은 나를 비판하고 수정하는 것을 환영합니다. 또한 컴퓨터에서 화웨이를 사용할 준비를하고있는 어린이 신발에 약간 도움이되기를 바랍니다. 연습 중에 자라서 어서! ~~
1. 식사 랜덤 체크 (30 포인트)
문제 설명 :
특정 회사의 많은 사람들로 인해 점심은 여러 번의 식사로 나뉘며 각 배치마다 식사 시간이 엄격하게 필요합니다. 식사 상황을 정기적으로 확인하십시오. 식사에 대한 무작위 검사를 얻기 위해 프로그램을 작성하십시오.
기능을 구현하려면 :
void check_lunch (int num, int time, int input [], int output [])
【입력】 int Num, 총을 먹는 총 수
int 시간, 배치의 식사 횟수
숯 입력 [], 식사 상황
【출력】 char output [], 불법 식사 상황
∎ 반환. 없음
참고 : 식사가 3 개의 배치로 나누어지는 상황의 경우 12 명이 식사를하고, 올바른 식사 상황은 다음과 같이 배포되어야합니다 [1, 2, 3, 1, 2, 3, 1, 2, 3]. 이 분포를 충족하지 않으면 위반이며 출력시 해당 위치는 0입니다.
예
1) 입력 : Num = 12, Time = 3, 입력 = [1,2,3,3,1,1,1,1,1,2,3]
출력 : 출력 = [1,2,3,0,3,1,0,0,1,2,3]
2) 입력 : Num = 11, Time = 4, intput = [1,2,3,4,2,3,4,1,2,3]
출력 : 출력 = [1,2,3,4,0,0,3,4,1,2,3]
패키지 com.sheepmu.text; import java.util.arrays; / * * @Author Sheepmu */ public class hwcompetition {public static void main (String [] args) {int num = 11, time = 4; int [] 입력 = {1,2,3,4,2,3,3,4,1,2,3}; // int [] output = new int [] {}; int [] output = new int [num]; hwcompetition hwc = 새로운 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; for (int i = 0; i <num; i ++) {int yushu = (i+1)%시간; if (yushu! = 0) {if (입력 [i] == yushu) {output [j] = yushu; } else output [j] = 0; J ++; } else {// 나머지의 경우 == 0 if (입력 [i] == time) {output [j] = time; } 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, 후보 문자열
char *tmp, 입력 문자열
【출력】 int *출력, 연관성에 맞는 문자열
∎ 반환. 없음
참고 : 후보 문자열은 공백으로 분리되며 입력 문자열은 문자열의 시작 부분에서만 일치합니다. 일치하는 하위 문자열을 출력하여 공간으로 분리됩니다. 성공적으로 일치하는 부분 문자열이 없으면 빈 문자열이 출력됩니다.
예
1) 입력 : str = Chengdu Chongqing, tmp = c
출력 : 출력 = Chengdu Chongqing
2) 입력 : str = Chengdu Chongqing, tmp = che
출력 : END = Chengdu
3) 입력 : str = 베이징 난징, TMP = Jing
출력 : 종료 =
방법 1 : 방법 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"; 문자열 tmp = "che"; 문자열 출력 = ""; hwcompetition hwc = 새로운 hwcompetition (); hwc.auto_complete (str, tmp, output); } void auto_complete (문자열 str, 문자열 tmp, 문자열 출력) {string [] strs = str.split ( "// s"); List <string> list = new ArrayList <string> (); for (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) .tochararray (); 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 {// 온도 길이는 케이블의 길이보다 작습니다. len_list-; // !!!!!!!!!!!!!!! J-; // !!!!!!!!! 부서지다; }}}}} // output = list.toString (); // this [chengdu], 여기서 [] if (! list.isempty ())가 양쪽 {stringbuffer sb = new StringBuffer (); sb.append ( "end ="); for (string result : list) {sb.append (result+""); // 공백 추가! ! 마지막으로 꼬리의 ""를 제거하십시오. } output = sb.tostring (). trim (); // !! } else {output = "end ="; } system.out.println (출력); }}방법 2 : 방법 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"; 문자열 tmp = "che"; 문자열 출력 = ""; hwcompetition hwc = 새로운 hwcompetition (); hwc.auto_complete (str, tmp, output); } void auto_complete (문자열 str, 문자열 tmp, 문자열 출력) {string [] strs = str.split ( "// s"); // 아래와 동일하게/s,/d 등만 추가해야합니다. list = new arraylist <string> (); for (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; if (! list.get (j) .matches (tmp+"[az]*")) {// 정규 표현식이 멋지다 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! list.remove (j); len_list--; J--; }} if (! list.isempty ()) {StringBuffer sb = new StringBuffer (); sb.append ( "end ="); for (string result : list) {sb.append (result+""); // 공백 추가! ! 마지막으로 꼬리의 ""를 제거하십시오. } output = sb.tostring (). trim (); // !! } else {output = "end ="; } system.out.println (출력); }} 3. 농장 계산 문제 (20 포인트)
문제 설명 :
특정 농장에는 총 머리와 N 피트가있는 닭과 토끼 그룹이있는 것으로 알려져 있습니다. 총 얼마나 많은 닭과 토끼가 있는지 계산하십시오.
기능을 구현하려면 :
공개 문자열 getfowlsnum (int iheadnum, int ifootnum, arraylist ichickennum, arraylist irabbitnum)
【입력】 IHEADNUM : 총 헤더 수
ifootnum : 총 발의 수 [출력] Ichickennum : 닭 수
irabbitnum : 토끼의 수 [return] "0": 요구 사항을 충족하는 닭과 토끼의 수
"-1": 요구 사항과 일치하는 수량이 발견되지 않았습니다
예
입력 : iheadnum = 201, ifootnum = 604
출력 : Ichickennum.add (100), irabbitnum.add (101) 반환 : "0"
입력 : iheadnum = 201, ifootnum = 123
출력 : ichickennum.add (0), irabbitnum.add (0) 반환 : "-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 = 새로운 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"; // 피트의 수가 이상하다면 분명히 틀 렸습니다. 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. 단일 문자 만 연속적으로 압축됩니다. Bababa는 압축 할 수 없습니다.
2. 압축 할 문자열에는 숫자와 탈출 문자가 포함되어 있지 않습니다.
필요한 구현 방법 :
public String compressstr (string srcstr) [입력] srcstr : 압축 될 문자열 [output] 없음 [return] compressed string의 입력 : srcstr = "aaacccddef"return : "a3c3d2ef"
방법 1 : (Arraylist 사용) Huawei 컴퓨터 요약 질문 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 = 새로운 hwcompetition (); 문자열 결과 = 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)); // (int j = i+1; j <str.length (); 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이고 유형은 서명되지 않은 int입니다.
기능을 구현하는 데 필요합니다
void dscsort (const int inputarray [], Unsigned int n, int outputarray [])
【입력】 inputArray : 주어진 지정되지 않은 배열
N : 배열 길이 [output] outputArray : 정렬 배열 [return] 예제 없음 입력 : inputArray = {1,5,4,8,3,9,6,7,0}
출력 : OutputArray = {9,8,7,6,5,4,3,2,1,0}
방법 1 : (API를 직접 호출) 아이디어 : 오름차순 순서 및 출력 반대
패키지 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 = 새로운 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; 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 = 새로운 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, High, Low); } void sort (int inputArray [], int high, int low) {int i, j, temp; I = High; // High-End Subscript J = LOW; // LOW-END SIBSCRIPT TEMP = INPUTARRAY [I]; // 표준 요소로서 첫 번째 요소를 부탁드립니다. while (i <j) {// 재귀 종료는 낮습니다. 그것에 관계없이, 낮은 첨자가 앞으로 이동됩니다. i ++; } while (i <j && temp <inputarray [i]) i ++; if (i <j) {inputArray [j] = inputArray [i]; J--; }} // 이후에, 즉, 첫 번째 디스크 정렬 inputArray [i] = temp; // 임시 값을 위치에 넣습니다. if (high <i) // 첨자 값 정렬 (inputarray, high, i-1); // 왼쪽 터미널 배열의 재귀는 (i <low) // 첨자 값 정렬 (입력 array, i+1, low); // 오른쪽 터미널 어레이의 재귀; 위의 예를 비교하면 실제로 I와 J는 다음 코드와 동일합니다 !!!!!!!!!!!!!!! }}6. 가장 큰 비 반복 번호를 찾으십시오 (30 포인트)
문제 설명
동일한 10 진수 표현식에 연속적 인 두 자리가없는 경우 "반복 번호 없음"이라고합니다. 예를 들어, 105, 1234 및 12121은 모두 "반복 숫자 없음"이며 11, 100 및 1225는 그렇지 않습니다. 긍정적 인 정수 A가 주어지면 A보다 가장 작은 "반복 번호 없음"을 반환합니다. A는 100,000 미만입니다.
기능을 구현하는 데 필요합니다
int getNotRepeatnum (int itivalue)
【입력】 lValue : 주어진 숫자는 값 [출력]보다 큰 최소 비 반복 숫자를 반환합니다.
반품 : 56
입력 : ivalue = 10
반환 : 12
입력 : ivalue = 98
반품 : 101
입력 : ivalue = 21099
반품 : 21201
패키지 com.sheepmu.text; import java.util.arrays; java.util.scanner import; / * * @Author Sheepmu */ public class hwcompetition {public static void main (String [] args) {스캐너 입력 = 새 스캐너 (System.in); int a = input.nextint (); System.out.println ( "입력 번호는 ---->"+a); hwcompetition hwc = 새로운 hwcompetition (); int result = hwc.getnotrepeatnum (a); System.out.println ( ""+a+"---->"+결과보다 큰 최소 비 반복 번호를 반환합니다); } int getNotRepeatnum (int itivalue) {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.tochararray (); int len = cs.length; for (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 가장 작은 것은 3입니다
판단 규칙 : CFIRSTCARD와 CSECONDCARD를 비교하십시오. FirstCar가 큰 경우 반환 1; 동일하면 0을 반환합니다. FirstCar가 작은 경우 -1을 반환하십시오.
기능을 구현하려면 :
int compraleonecard (char cfirstcard, char csecondcard)
【입력】 char cfirstcard : 비교 해야하는 첫 번째 카드
char csecondcard : 비교 해야하는 두 번째 카드 참고 : 입력은 문자 'a', '2', '9', '9', 't', 'j', 'q', 'k', 'd', 'b'입니다.
[반품] int 유형 : 두 카드의 비교 결과를 반환합니다. 참고 : 입력의 합법성은 필요하지 않으며 이는 기능 사용자가 보장합니다. 입력 된 카드는 모두 '1', '2'… '9', Capital 'a', 't', 'j', 'q', 'k', 'd', 'b'입니다.
예를 들어:
'4', '5', 반환 : -1을 입력하십시오
'6', '6', 반환 : 0을 입력하십시오
패키지 com.sheepmu.text; / * * @Author Sheepmu */ public class hwcompetition {public static void main (String [] args) {char cfirstcard = '5'; char csecondcard = '6'; hwcompetition hwc = 새로운 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는 = getRealln (csecondcard); System.out.println ( "is --->"+ is); if> is? 1 : if <is? -1 : 0; // 브래킷을 추가 할 필요가 없습니다} int getRealln (char c) {int value = 0; 스위치 (c) {case 't': value = 10; 부서지다; 사례 'j': value = 11; 부서지다; 사례 'Q': 값 = 12; 부서지다; 사례 'k': 값 = 13; 부서지다; 사례 'a': value = 14; 부서지다; 사례 '2': 값 = 15; 부서지다; 사례 'd': value = 16; 부서지다; 사례 'B': 값 = 17; 부서지다; CASE '3': CASE '4': CASE '5': CASE '6': CASE '7': CASE '8': CASE '9': // value = C; // 슈퍼 멍청한 오류 !!! 9 '= 57을 입력하면 !!! 문자 9의 값은 숫자 9가 아니라 문자 자체의 가치입니다. value = integer.parseint (c+""); 부서지다; } 반환 값; }} 8. Glimps (30 점)
문제 설명 :
청두에서는 인기있는 포커 게임을 "드라이 응시"라고합니다. A (1), 2, 3, 4, 5, 6, 7, 8, 9, T (10), J (11), Q (12), K (13)를 포함하여 카드 놀이가 사용됩니다.
참고 : 10은 T로 대체되며, 큰 유령과 작은 유령은 당분간 여기에서 고려되지 않습니다.
2 핸드 카드의 크기 규칙은 다음과 같습니다.
a) 단일 카드 : 4 ~ 3, 5 ~ 4, 두 카드가 조금 더 클 때에 만 비교할 수 있습니다. 비교 순서는 다음과 같습니다. a> k> q> j> t> 9> 8> 7> 6> 5> 4> 3입니다.
예를 들어 : 6은 5보다 크지 만 4보다 크지는 않으며 6과 4를 비교할 수 없습니다. 단일 카드 2는 특수 카드로, 다른 모든 일반 단일 카드와 비교할 수 있으며 가장 큰 카드입니다.
3, 그것은 어떤 카드보다 클 수 없습니다.
b) 쌍 : 즉, 두 카드의 지점은 동일하며 규칙은 단일 카드의 규칙과 유사하며 유사한 처리도 필요합니다. 2 개의 2는 특수 쌍이며 다른 모든 쌍보다 클 수 있습니다.
참고 : 서브 및 단일 카드를 비교할 수 없습니다.
c) 폭탄 : 같은 수의 지점을 가진 3 장의 카드. 폭탄은 단일 카드와 쌍보다 클 수 있습니다. 폭탄 사이의 비교는 단일 카드와 쌍과 같을 필요는 없습니다. 비교하는 것이 더 클 수 있습니다.
규칙이 충족되는 한 : 222> aaa> kkk> qq> jjj> tt>…> 333. 즉, 222는 가장 크고 AAA는 KKK 또는 333보다 클 수 있습니다.
d) 다른 규칙은 구현에 대해 고려되지 않습니다. 이제 양손으로 카드 크기를 자동으로 결정하는 프로그램을 구현하십시오. 참고 : 입력 한 카드는 단일, 쌍 및 폭탄의 세 가지 유형으로 만 나타납니다. 최대 사진 수는 3입니다.
단일 카드 2 개가 없습니다. 예를 들어 "25"는 "334"등과 같은 쌍과 단일 카드가 없습니다. 유사한 입력 예외를 고려할 필요가 없습니다.
그러나 PFIRSTCARDS는 단일 카드이며 PSECONDCARDS는 쌍이며 유사한 조합 입력은 합법적입니다.
기능을 구현하려면 :
int comparecards (char *pfirstcards, char *psecondcards)
【입력】 char *pfirstcards : 비교 해야하는 첫 핸드 카드
char *psecondcards : 비교 해야하는 중고 [return] int 유형, 반환 값 설명 :
"3"및 "6"과 같은 PFIRSTCARD 및 PSECONDCARD를 비교할 수없는 경우; "55"및 "6"등은 0을 반환합니다.
pfirstcards가 psecondcards보다 큰 경우 1을 반환하십시오.
pfirstcards가 psecondcards와 같으면 2를 반환하십시오.
pfirstcards가 psecondcards보다 작 으면 반환 3.
참고 : 입력의 합법성은 필요하지 않으며, 이는 기능 사용자가 보장합니다. 입력 된 카드는 모두 '1', '2'.. '9', Capital 'a', 't', 'j', 'q', 'k'입니다.
예제 입력 : "77", "33", return : 0
"77", "77", 반환 : 2를 입력하십시오
아이디어 : 1. 1VS2 또는 2VS1이 경우 결과를 얻으려면 길이 만 판단하면됩니다. 후속 비교가 필요하지 않습니다.
2. 1VS1 또는 2 VS2 비교와 같은 방식
3. 3VS3 및 사례 2의 다른 비교 방법
4. 3 대 비 3 또는 비 3 VS3
패키지 com.sheepmu.text; import java.util.arrays; / * * @Author Sheepmu */ public class hwcompetition {public static void main (String [] args) {String pfirstcards = "QQ"; 문자열 psecondcards = "444"; hwcompetition hwc = 새로운 hwcompetition (); int result = hwc.comparecards (pfirstcards, psecondcards); System.out.println ( "비교 결과"+결과); } int comparecards (문자열 pfirstcards, 문자열 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.out.println (arrays.toString (is1)); // [12, 12] // system.out.println (arrays.tostring (is2)); // [4, 4, 4] if (Len1 == && len2 == 1) || (len1 == 2 && len2 == 2)))) {// 1vs1 또는 2vs2, 메소드는 동일합니다. 실제로 (math.abs (is1 [0] -is2 [0]) == 1) // 괄호가 필요하지 않습니다. // 길이 2는 확실히 한 쌍의 케이스 return is1 [0] -is2 [0]> 0이라는 것을 알고 있습니다. 1 : 3; else if (is1 [0] == is2 [0]) 반환 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 (문자열 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; 스위치 (c) {case 't': value = 10; 부서지다; 사례 'j': value = 11; 부서지다; 사례 'Q': 값 = 12; 부서지다; 사례 'k': 값 = 13; 부서지다; 사례 'a': value = 14; 부서지다; 사례 '2': 값 = 15; 부서지다; CASE '3': CASE '4': CASE '5': CASE '6': CASE '7': CASE '8': CASE '9': // value = C; // 슈퍼 멍청한 오류 !!! 9 '= 57을 입력하면 !!! 문자 9의 값은 숫자 9가 아니라 문자 자체의 가치입니다. value = integer.parseint (c+""); 부서지다; } 반환 값; }} 9. 매트릭스 전환 (20 점)
문제 설명 :
n*n 행렬의 행을 바꾸십시오. ・
기능을 구현하려면 :
공개 문자열 matrixtranspose (String inarr, int n)
【입력】 inarr : 입력 문자 매트릭스
N : n*n 행렬 행의 수 [return] 변신 문자 매트릭스 참고 :
입력 및 출력 행렬은 1 차원 형태로 저장된 2 차원 배열입니다. 예를 들어, 입력은 "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 : 매트릭스가 질문에 사용되었습니다. 2 차원 배열에 익숙하다고 생각하십시오.
패키지 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,8,8,10,12,13,14,15,16"; int n = 4; System.out.println ( "inarr --->"+inarr); hwcompetition hw = 새로운 hwcompetition (); 문자열 결과 = hw.matrixtranspose (inarr, n); System.out.println ( "결과 ---->"+결과); } public String matrixtranspose (String inarr, int n) {// 문자열에서 쉼표를 제거하십시오. 그렇지 않으면 쉼표는 문자열의 첨자 값이됩니다. 출력시 string [] ss = inarr.split ( ",")를 추가하십시오. 문자열 [] [] css = 새 문자열 [n] [n]; int k = 0; for (int i = 0; i <n; i ++) {// 문자열을 (int j = 0; j <n; j ++)의 2 차원 배열로 변환합니다. {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; import java.util.arrays; / * * @Author Sheepmu */ public class hwcompetition {public static void main (string [] args) {String inarr = "1,2,3,4,5,6,8,8,10,12,13,14,15,16"; int n = 4; System.out.println ( "inarr --->"+inarr); hwcompetition hw = 새로운 hwcompetition (); 문자열 결과 = hw.matrixtranspose (inarr, n); System.out.println ( "결과 ---->"+결과); } public String matrixtranspose (String inarr, int n) {// 문자열에서 쉼표를 제거하십시오. 그렇지 않으면 쉼표는 문자열의 첨자 값이됩니다. 출력시 string [] ss = inarr.split ( ",")를 추가하십시오. StringBuffer sb = new StringBuffer (); for (int i = 0; i <n; i ++) {// 질문 예제 : 필요한 첨자 순서는 (int j = i; j <ss.length; 쉼표}} 10. 가로등 (20 포인트)
지방 수도의 거리는 십자형이 있습니다. 가로등의 작동을 모니터링하기 위해 각 거리는 숫자 줄을 사용하여 거리의 모든 가로등의 작동을 식별합니다.
가로등에 다음 세 상태 만 있다고 가정합니다 (각각 0, 1, 2로 식별되고 가로등은 상태 중 하나에만 해당).
0 사인 가로등이 꺼져 있습니다.
1 가로등이 켜집니다.
2 가로등 실패 식별;
입력 된 끈을 기준으로 길거리의 동일한 상태에서 최대 연속 가로등 수를 찾으십시오. 두 상태의 가로등 수가 동일하면 첫 번째 가로등 상태가 반환됩니다.
길거리의 연속 가로등으로 구성된 상태 줄을 입력하십시오. 문자열은 숫자 만 포함하고 각 가로등의 상태는 0, 1 및 2 중 하나입니다. 예를 들어, "1101"은 4 개의 가로등을 나타내고, 세 번째 가로등은 외부 상태에 있고, 다른 3 개는 ON 상태에 있습니다.
동일한 상태에서 지속적으로 유지되는 최대의 가로등 수는 출력입니다.
위의 가로등의 상태;
요구 사항 : 먼저 수량을 출력 한 다음 상태를 출력 한 다음 두 정수 사이의 공간 간격을 사용하십시오. 예를 들어 출력 :
53 2
샘플 입력
112200111
샘플 출력
3 1
패키지 com.sheepmu.text; import java.util.arrays; / * * @Author Sheepmu */public class hwcompetition {public static void main (string [] args) {문자열 s = "112001110"; //이 유형의 질문은 결국 동일한 모든 상황에주의를 기울여야합니다. 즉, 다시 다르지 않기 때문에 죽은주기가 쉽습니다. System.out.println ( "inarr --->"+s); hwcompetition hw = 새로운 hwcompetition (); 문자열 결과 = hw.ludeng (들); System.out.println ( "질문 결과 ---->"+결과); } public String ludeng (문자열 s) {// 문자열에서 쉼표를 제거하십시오. 그렇지 않으면 쉼표는 문자열의 첨자 값이기도합니다. 출력 할 때 char [] as = s.tochararray ()를 추가하십시오. int len = as.length; int maxc = 1; // int mubiaobindex = 0; // 추가 변수를 생성하지 마십시오. // int mubiaovalue = as [0]; int bindex = 0; // 가장 큰 연속적인 첫 번째 첨자를 반환 해야하는 경우 6; 질문 에이 요구 사항이있는 경우 : 두 가지 변수를 설정하십시오. char value = as [0]; // 질문이 최대 길이 부분의 값을 반환 해야하는 경우, 즉 (int i = 0; i <len-1;) {int count = 1; // 각 바깥 쪽 루프가 1로 설정되고 새 count bindex = i를 시작해야합니다. 값 = [i]로; for (int j = i+1; j <len; j ++) {if ([i]! = as [j]) {i = j; 부서지다; } else {i ++; // !!!!!!!!!!!! 나중에 다르게 나타나지 않으면; 이 문장이 추가되지 않으면 외부 루프가 항상 실행됩니다. 카운트 ++; }} if (count> maxc) {maxc = count; // mubiaobindex = bindex; // mubiaovalue = value; System.out.println ( "maxc --->"+maxc+"시작 첨자 ---->"+bindex+"status ---->"+value); }} StringBuffer sb = new StringBuffer (); sb.append (maxc+"") .append (value) .toString (); }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.