Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:一次AC, Java 代码 晒晒In Reply To:一次AC, Java 代码 晒晒 Posted by:alvin2 at 2013-03-13 11:14:24 > import java.util.Scanner; > > public class Main > { > > static int[] record = new int[4]; > static String[] output = null; > static int[] idxes = null; > static String[] tmpStrings = null; > static int[] tmpInt = null; > static int i1, j1; > > public static void main(String[] args) > { > > Scanner cin = new Scanner(System.in); > > try > { > // Scanner cin = new Scanner(new File("C:\\input.txt")); > int a = cin.nextInt(); > int b = cin.nextInt(); > output = new String[b]; > idxes = new int[b]; > tmpStrings = new String[b]; > tmpInt = new int[b]; > > int idx = 0; > String curLine = cin.nextLine(); > int curOrdernum; > while (cin.hasNext()) > { > curLine = cin.nextLine(); > > initialize(curLine); > > curOrdernum = getOrderNum(curLine); > > output[idx] = curLine; > idxes[idx] = curOrdernum; > idx++; > } > > mergeSort(0, output.length - 1); > > for (int i = 0; i < output.length; i++) > { > System.out.println(output[i]); > } > > } > catch (Exception e) > { > // TODO: handle exception > } > } > > static void mergeSort(int low, int hi) > { > if (low < hi) > { > int mid = low + (hi - low) / 2; > mergeSort(low, mid); > mergeSort(mid + 1, hi); > merge(low, mid, hi); > > } > } > > static void merge(int low, int mid, int hi) > { > for (int i = low; i <= hi; i++) > { > tmpStrings[i] = output[i]; > tmpInt[i] = idxes[i]; > } > i1 = low; > j1 = mid + 1; > > for (int k = low; k <= hi; k++) > { > if (i1 > mid) > { > output[k] = tmpStrings[j1]; > idxes[k] = tmpInt[j1++]; > } > else if (j1 > hi) > { > output[k] = tmpStrings[i1]; > idxes[k] = tmpInt[i1++]; > } > else if (tmpInt[i1] <= tmpInt[j1]) > { > output[k] = tmpStrings[i1]; > idxes[k] = tmpInt[i1++]; > } > else > { > output[k] = tmpStrings[j1]; > idxes[k] = tmpInt[j1++]; > } > } > > } > > static void initialize(String curLine) > { > for (int i = 0; i < record.length; i++) > { > record[i] = 0; > } > > for (int i = 0; i < curLine.length(); i++) > { > char curChar = curLine.charAt(i); > record[getCharidx(curChar)]++; > } > } > > static int getCharidx(char c) > { > switch (c) > { > case 'A': > return 0; > case 'C': > return 1; > case 'G': > return 2; > case 'T': > return 3; > default: > return -1; > } > > } > > static int getOrderNum(String curLine) > { > int retval = 0; > int idx = 0; > > for (int i = 0; i < curLine.length(); i++) > { > idx = getCharidx(curLine.charAt(i)); > record[idx]--; > > idx--; > while (idx >= 0) > { > retval += record[idx--]; > } > } > return retval; > > } > > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator