首页 > ACM题库 > HDU-杭电 > hdu 2019 数列有序![解题报告]java
2013
12-26

hdu 2019 数列有序![解题报告]java

数列有序!

问题描述 :

有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。

输入:

输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。

输出:

输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。

样例输入:

3 3
1 2 4
0 0

样例输出:

1 2 3 4

package hdu2019;

import java.io.BufferedInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner cin = new Scanner(new BufferedInputStream(System.in));
		List<Integer> list = new ArrayList<Integer>();

		while (cin.hasNext()) {
			int n = cin.nextInt();
			int m = cin.nextInt();
			if (n + m == 0)
				break;
			list.clear();
			for (int i = 0; i < n; i++) {
				list.add(cin.nextInt());  //添加元素
			}
			list.add(m);
			Collections.sort(list);  //排序
			for (int i = 0; i<list.size(); i++){
				if(i==0){
					System.out.print(list.get(i));
				}else{
					System.out.print(" "+list.get(i));
				}
			}
			System.out.println();
		}
	}

}

解题转自:http://blog.csdn.net/fanshujuntuan/article/details/9018623


  1. 一开始就规定不相邻节点颜色相同,可能得不到最优解。我想个类似的算法,也不确定是否总能得到最优解:先着一个点,随机挑一个相邻点,着第二色,继续随机选一个点,但必须至少有一个边和已着点相邻,着上不同色,当然尽量不增加新色,直到完成。我还找不到反例验证他的错误。。希望LZ也帮想想, 有想法欢迎来邮件。谢谢

  2. 代码是给出了,但是解析的也太不清晰了吧!如 13 abejkcfghid jkebfghicda
    第一步拆分为 三部分 (bejk, cfghi, d) * C(13,3),为什么要这样拆分,原则是什么?

  3. 因为是要把从字符串s的start位到当前位在hash中重置,修改提交后能accept,但是不修改居然也能accept

  4. 第一句可以忽略不计了吧。从第二句开始分析,说明这个花色下的所有牌都会在其它里面出现,那么还剩下♠️和♦️。第三句,可以排除2和7,因为在两种花色里有。现在是第四句,因为♠️还剩下多个,只有是♦️B才能知道答案。