Hduの1本の水題の順序付け(hdu 1.3.6)
9430 ワード
ソート(hdu 1.3.6)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5799 Accepted Submission(s): 1664
あなたの任務は、これらの分割で得られた整数を、小さい順にソートして出力することです.
Input入力には複数のテスト例が含まれており、各入力データは1行の数字(数字の間にスペースがない)しかなく、この数字の長さは1000以下である.
入力データ保証:分割された非負の整数は1000000を超えない.入力データがすべて「5」で構成されるはずがない.
Outputは、各試験例について、分割された整数ソートの結果を出力し、隣接する2つの整数の間を1つのスペースで分割し、各グループの出力が1行を占める.
Sample Input 0051231232050775
Sample Output 0 77 12312320
これは杭電の基礎的な水題で、実は比較的に簡単に見て、5を区切り記号として文字列を区分して、取得したInteger整数を並べ替えて出力して、考慮する情況は以下のいくつかにほかならない
1、冒頭は5、末尾は5 2、冒頭は5、末尾は5 3ではなく、冒頭は5ではなく、末尾は5 4、冒頭は5ではなく、末尾も5ではなく実は簡単な操作で、私が考えたのはc言語の操作で実現した(javaを使っていたが、javaのSTLを使うのをあきらめて、c言語でこの問題を考えたい)、すぐに次のコードを書きました
楽しい感じで、hdu OJが提出して、結局WAが現れて、間違いなくWAです!!!本当に不思議ですね.私は過去を変えて、依然としてWAです!、自分が思いついたことを自分のパソコンでACできるようになったのですが、hdu OJはいつもWAで、このまま1午後、少なくとも6回提出しました!!!WAは相変わらず、、、、私を支えて他のOJプラットフォームに着いても、通じないで、最后に牛客に行ってテストして、意外にも过ごしました!、なんてことだ,今私も理解したくありません.これも私がなぜこの水のためにこの文章を書いたのかの原因です.
でも、そうじゃない!私はやはりjavaのクラスライブラリに従って、大衆化します!、頭部の’5’をループして取り除き、最後に汎用的な正規表現で分割!最終的に以下のコードがありました(これも姉が仕方がないとは思えない状況です...)
これで私の6回WAを記念します!
(愚かで、やはりどこが问题があることを知らないで、头が痛くて、先に放して、、、ACの次の问题を続けましょう)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5799 Accepted Submission(s): 1664
Problem Description
に1行の数字を入力し、この数字の「5」をすべてスペースと見なすと、1行がスペースで分割されたいくつかの非負の整数(一部の整数は「0」で始まり、これらの頭部の「0」は無視されるべきで、この整数がいくつかの「0」で構成されていない限り、この整数は0である)が得られます.あなたの任務は、これらの分割で得られた整数を、小さい順にソートして出力することです.
Input入力には複数のテスト例が含まれており、各入力データは1行の数字(数字の間にスペースがない)しかなく、この数字の長さは1000以下である.
入力データ保証:分割された非負の整数は1000000を超えない.入力データがすべて「5」で構成されるはずがない.
Outputは、各試験例について、分割された整数ソートの結果を出力し、隣接する2つの整数の間を1つのスペースで分割し、各グループの出力が1行を占める.
Sample Input 0051231232050775
Sample Output 0 77 12312320
これは杭電の基礎的な水題で、実は比較的に簡単に見て、5を区切り記号として文字列を区分して、取得したInteger整数を並べ替えて出力して、考慮する情況は以下のいくつかにほかならない
1、冒頭は5、末尾は5 2、冒頭は5、末尾は5 3ではなく、冒頭は5ではなく、末尾は5 4、冒頭は5ではなく、末尾も5ではなく実は簡単な操作で、私が考えたのはc言語の操作で実現した(javaを使っていたが、javaのSTLを使うのをあきらめて、c言語でこの問題を考えたい)、すぐに次のコードを書きました
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
/**
*
* @author chaplinJ
*
*/
public class Main5{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String st;
char[] chars;
int[] location;
List list;;
int count = 0;
String values;
while(sc.hasNext()){
st = sc.next();
chars = st.toCharArray();
location = new int[chars.length+1]; //
count=0;
list = new ArrayList();
//
for(int i = 0 ; i < chars.length+1;i++){
location[i] = -1;
}
for(int i = 0 ; i < chars.length;i++){
if(chars[i] == '5'){
location[count++] = i; //
}
}
if(location[0] != -1){ // 5
if(chars[0] != 5){// 5
values = String.valueOf(chars, 0, (location[0]));
if(!"".equals(values)){
list.add(Integer.parseInt(values));
}
}
for(int i = 0 ; i < location.length - 1 && location[i] != -1;i++){
if( location[i] + 1 <= location[i+1] - 1){ // 5
values = String.valueOf(chars, location[i] + 1, (location[i+1] - location[i] - 1));
// System.out.print((location[i] + 1) + " " + (location[i+1] - 1));
if(!"".equals(values)){
list.add(Integer.parseInt(values));
}
}
}
if(location[count - 1] != chars.length -1){ // 5
values = String.valueOf(chars, location[count - 1] + 1, chars.length - location[count - 1] - 1);
// System.out.print((location[i] + 1) + " " + (location[i+1] - 1));
if(!"".equals(values)){
list.add(Integer.parseInt(values));
}
}
}
Collections.sort(list);
// for(int i = 0 ; i < list.size();i++){
// System.out.print(list.get(i)+" ");
// }
for(int i=0;iint a = list.get(i);
System.out.print(a);
if(i!=list.size()-1)
System.out.print(" ");
else
System.out.println();
}
}
}
}
楽しい感じで、hdu OJが提出して、結局WAが現れて、間違いなくWAです!!!本当に不思議ですね.私は過去を変えて、依然としてWAです!、自分が思いついたことを自分のパソコンでACできるようになったのですが、hdu OJはいつもWAで、このまま1午後、少なくとも6回提出しました!!!WAは相変わらず、、、、私を支えて他のOJプラットフォームに着いても、通じないで、最后に牛客に行ってテストして、意外にも过ごしました!、なんてことだ,今私も理解したくありません.これも私がなぜこの水のためにこの文章を書いたのかの原因です.
でも、そうじゃない!私はやはりjavaのクラスライブラリに従って、大衆化します!、頭部の’5’をループして取り除き、最後に汎用的な正規表現で分割!最終的に以下のコードがありました(これも姉が仕方がないとは思えない状況です...)
package acm.hdu.edu.cn;
import java.util.Arrays;
import java.util.Scanner;
/**
*1.3.6
* @author chaplinJ
*
*/
public class Main5{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String st;
String[] values;
int[] vas;
while(sc.hasNext()){
st = sc.next();
while(true){
if(st.charAt(0) == '5'){
st = st.substring(1);
}else{
break;
}
}
values = st.split("5+");
vas = new int[values.length];
for(int i = 0 ; i < values.length;i++){
vas[i] = Integer.parseInt(values[i]);
}
Arrays.sort(vas);
for(int i = 0 ; i < vas.length;i++){
System.out.print(vas[i]);
if( i!= vas.length - 1){
System.out.print(" ");
}else
System.out.println();
}
}
}
}
これで私の6回WAを記念します!
(愚かで、やはりどこが问题があることを知らないで、头が痛くて、先に放して、、、ACの次の问题を続けましょう)