<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java && C#

    要學(xué)得東西很多,但我們的時(shí)間卻不是很多!
    數(shù)據(jù)加載中……
    Java經(jīng)典算法集

    算法程序題:

    ??? 該公司筆試題就1個(gè),要求在10分鐘內(nèi)作完。

    ??? 題目如下:用1、2、2、3、4、5這六個(gè)數(shù)字,用java寫一個(gè)main函數(shù),打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"與"5"不能相連。



    static int[] bits = new int[] { 1, 2, 3, 4, 5 };

    /**
    ?* @param args
    ?*/
    public static void main(String[] args) {
    sort("", bits);
    }

    private static void sort(String prefix, int[] a) {
    if (a.length == 1) {
    System.out.println(prefix + a[0]);
    }

    for (int i = 0; i < a.length; i++) {
    sort(prefix + a[i], copy(a, i));
    }
    }

    private static int[] copy(int[] a,int index){
    int[] b = new int[a.length-1];
    System.arraycopy(a, 0, b, 0, index);
    System.arraycopy(a, index+1, b, index, a.length-index-1);
    return b;
    }


    **********************************************************************

    ? 基本思路:
    1 把問題歸結(jié)為圖結(jié)構(gòu)的遍歷問題。實(shí)際上6個(gè)數(shù)字就是六個(gè)結(jié)點(diǎn),把六個(gè)結(jié)點(diǎn)連接成無(wú)向連通圖,對(duì)于每一個(gè)結(jié)點(diǎn)求這個(gè)圖形的遍歷路徑,所有結(jié)點(diǎn)的遍歷路徑就是最后對(duì)這6個(gè)數(shù)字的排列組合結(jié)果集。
    2 顯然這個(gè)結(jié)果集還未達(dá)到題目的要求。從以下幾個(gè)方面考慮:
    ? 1. 3,5不能相連:實(shí)際要求這個(gè)連通圖的結(jié)點(diǎn)3,5之間不能連通, 可在構(gòu)造圖結(jié)構(gòu)時(shí)就滿足改條件,然后再遍歷圖。
    ? 2. 不能有重復(fù): 考慮到有兩個(gè)2,明顯會(huì)存在重復(fù)結(jié)果,可以把結(jié)果集放在TreeSet中過濾重復(fù)結(jié)果
    ? 3. 4不能在第三位: 仍舊在結(jié)果集中去除滿足此條件的結(jié)果。

    采用二維數(shù)組定義圖結(jié)構(gòu),最后的代碼是:

    import java.util.Iterator;
    import java.util.TreeSet;

    public class TestQuestion {

    private String[] b = new String[]{"1", "2", "2", "3", "4", "5"};
    private int n = b.length;
    private boolean[] visited = new boolean[n];
    private int[][] a = new int[n][n];
    private String result = "";
    private TreeSet set = new TreeSet();

    public static void main(String[] args) {
    new TestQuestion().start();
    }

    private void start() {

    // Initial the map a[][]
    for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
    if (i == j) {
    a[i][j] = 0;
    } else {
    ??? a[i][j] = 1;
    }
    }
    }

    // 3 and 5 can not be the neighbor.
    a[3][5] = 0;
    a[5][3] = 0;

    // Begin to depth search.
    for (int i = 0; i < n; i++) {
    ??? this.depthFirstSearch(i);
    }

    // Print result treeset.
    Iterator it = set.iterator();
    while (it.hasNext()) {
    String string = (String) it.next();
    // "4" can not be the third position.
    if (string.indexOf("4") != 2) {
    System.out.println(string);
    }
    }
    }

    private void depthFirstSearch(int startIndex) {
    visited[startIndex] = true;
    result = result + b[startIndex];
    if (result.length() == n) {
    // Filt the duplicate value.
    set.add(result);
    }
    for(int j = 0; j < n; j++) {
    if (a[startIndex][j] == 1 && visited[j] == false) {
    depthFirstSearch(j);
    } else {
    continue;
    }
    }

    // restore the result value and visited value after listing a node.
    ??? result = result.substring(0, result.length() -1);
    ??? visited[startIndex] = false;
    }
    }

    ?

    posted on 2007-03-04 14:17 Bill111 閱讀(21395) 評(píng)論(21)  編輯  收藏

    評(píng)論

    # re: Java經(jīng)典算法集 2007-03-25 08:27 圓規(guī)

    大家好好看看吧!加油哦!

    # re: Java經(jīng)典算法集 2008-09-06 10:45 123

    好啊好啊

    # re: Java經(jīng)典算法集 2008-10-22 20:11 cc-yuechuzhao

    我的算法,不用任何數(shù)據(jù)結(jié)構(gòu)
    public class choose6 {
    public static void main(String[] args) {
    int t=0;
    int x;
    for (x = 122345; x < 543222; x++) {
    if ((x + "").indexOf('2') >= 0) {
    if ((x + "").indexOf('2', (x + "").indexOf('2')) >= 0) {
    if (((x + "").indexOf('3') >= 0)
    && ((x + "").indexOf('4') >= 0)
    && ((x + "").indexOf('5') >= 0)
    &&((x + "").indexOf("35")<0)
    &&((x + "").indexOf("53")<0)
    &&((x + "").indexOf('4')!=2)
    )
    ++t;
    System.out.println(x);
    }
    }
    }System.out.println(t);
    }
    }

    # re: Java經(jīng)典算法集 2009-11-10 15:10 感應(yīng)

    @cc-yuechuzhao
    錯(cuò)的

    # re: Java經(jīng)典算法集 2010-07-02 15:01 tt

    public static void main(String[] args) {
    for(int i=111111;i<555555;i++){
    String str=i+"";
    if(str.indexOf("35")==-1 && str.indexOf("53")==-1){

    if(!str.substring(2).startsWith("4")){
    System.out.println(str);
    }
    }
    }


    }

    # re: Java經(jīng)典算法集[未登錄] 2012-07-25 14:15 過客

    冒泡排序

    # re: Java經(jīng)典算法集 2013-01-22 06:18 Zi由的天空

    @感應(yīng)
    怎么錯(cuò)了

    # re: Java經(jīng)典算法集 2013-03-01 15:10 adual

    我來(lái)猥瑣一把:
    for (int i = 122345; i < 543222; i++) {
    String sb = String.valueOf(i);
    String temp = sb.replaceFirst("1", "a");
    temp = temp.replaceFirst("2", "a");
    temp = temp.replaceFirst("2", "a");
    temp = temp.replaceFirst("3", "a");
    temp = temp.replaceFirst("4", "a");
    temp = temp.replaceFirst("5", "a");
    //數(shù)字的構(gòu)成必須用指定的6位數(shù)
    if (! "aaaaaa".equalsIgnoreCase(temp)) {
    continue;
    }
    /*如果4在第三位則不計(jì)此數(shù)*/
    if (sb.indexOf("4") ==2) {
    continue;
    }
    /*判斷3和5不能在一起*/
    int flag = 0;
    if (sb.indexOf("35") > -1 || sb.indexOf("53") > -1) {
    flag ++;
    }
    if (flag > 0) {
    continue;
    }

    System.out.println(i);
    }
    }

    # re: Java經(jīng)典算法集 2013-03-09 01:37 酷到你尖叫

    @adual 強(qiáng)!!

    # re: Java經(jīng)典算法集 2013-05-14 17:59 wu0103356

    import java.util.Iterator;
    import java.util.TreeSet;

    public class 我的排序 {

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int a[] = { 1, 2, 2, 3, 4, 5 };
    TreeSet<String> set = new TreeSet<String>();
    for (int i = 0; i < 6; i++) {
    for (int k = 0; k < 6; k++) {
    for (int l = 0; l < 6; l++) {
    for (int m = 0; m < 6; m++) {
    for (int n = 0; n < 6; n++) {
    for (int o = 0; o < 6; o++) {
    if (l == 4 || i == k || i == l || i == m
    || i == n || i == o || k == l || k == m
    || k == n || k == o || l == m || l == n
    || l == o || m == n || m == o || n == o) {
    continue;
    }
    String s = a[i] + "" + a[k] + "" + a[l] + ""
    + a[m] + "" + a[n] + "" + a[o];
    if(s.contains("35")||s.contains("53")){
    continue;
    }
    set.add(s);
    }
    }
    }
    }
    }
    }
    Iterator i = set.iterator();
    while (i.hasNext())
    System.out.println(i.next());
    System.out.println(set.size());
    }

    }

    # re: Java經(jīng)典算法集 2013-06-09 11:22 番茄炒蛋

    @wu0103356
    這個(gè)排序太兇殘了,這么多排序。辛虧數(shù)組長(zhǎng)度不長(zhǎng)啊。

    # re: Java經(jīng)典算法集 2013-07-29 15:26 好球哥哥

    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;

    //遞歸傳入字符數(shù)組,輸出有多少組合
    public class 排列組合 {
    public static void main(String arg[]) throws Exception {
    char[] c = new char[] {'1','2','2','3','4','5'};// 定義一個(gè)做實(shí)驗(yàn)的數(shù)組

    List<char[]> l = new 排列組合().dg(c);// 計(jì)算出所有組合

    Set<String> set = new HashSet<String>();//開始去掉重復(fù)
    for (char[] ctemp : l) {
    String s = new String(ctemp);
    if(s.charAt(2)=='4'){
    continue;
    }
    if(s.indexOf("35")>=0){
    continue;
    }
    if(s.indexOf("53")>=0){
    continue;
    }
    set.add(s);
    }

    for(String s:set){//輸出
    System.out.println(s);
    }

    }

    //遞歸排序方法
    public List<char[]> dg(char[] targetArray) {
    if (targetArray.length == 2) {// 如果數(shù)組只有2個(gè)就不用遞歸了,直接輸出順序
    List<char[]> list2 = new ArrayList<char[]>();
    list2.add(new char[] { targetArray[0], targetArray[1] });
    list2.add(new char[] { targetArray[1], targetArray[0] });
    return list2;
    }

    List<char[]> returnList = new ArrayList<char[]>();//定義要返回的結(jié)果list
    for (Integer i = 0; i < targetArray.length; i++) {
    char temp = targetArray[i];
    char[] result = new char[targetArray.length - 1];
    for (Integer j = 0; j < targetArray.length; j++) {
    if (j < i) {
    result[j] = targetArray[j];
    } else if (j > i) {
    result[j-1] = targetArray[j];
    }
    }
    List<char[]> listaaa = charJiaList(temp, dg(result));
    for (char[] c1111 : listaaa) {
    returnList.add(c1111);
    }

    }
    return returnList;
    }

    //dg方法的輔助方法
    private List<char[]> charJiaList(char c, List<char[]> listchar) {
    List<char[]> listC = new ArrayList<char[]>();
    for (char[] charTemp : listchar) {
    char[] charTemp1 = new char[charTemp.length + 1];
    charTemp1[0] = c;
    for (Integer i = 1; i < charTemp1.length; i++) {
    charTemp1[i] = charTemp[i - 1];
    }
    listC.add(charTemp1);
    }
    return listC;
    }
    }

    # re: Java經(jīng)典算法集[未登錄] 2013-09-26 02:13 john

    你改一下,把數(shù)字組合換成字母或者字符,難度就出來(lái)了,這樣下面的山寨將全部打倒,不過還是有可以不用數(shù)據(jù)結(jié)構(gòu)的簡(jiǎn)單方法,大家有興趣可以再來(lái)切磋下,呵呵

    # re: Java經(jīng)典算法集[未登錄] 2013-09-26 02:15 john

    @wu0103356
    這個(gè)笨辦法,有點(diǎn)搞笑,太沒技術(shù)含量了

    # re: Java經(jīng)典算法集[未登錄] 2013-09-26 02:16 john

    @adual
    你這個(gè)山寨了,如果換成其他字符,你就沒辦法,哈哈

    # re: Java經(jīng)典算法集[未登錄] 2013-09-26 02:19 john

    @john
    哦,我仔細(xì)看了下,好像錯(cuò)了

    # re: Java經(jīng)典算法集 2013-10-17 17:10 迷迷

    public static void main(String[] args) {
    int[] bits = new int[] { 6, 7, 8, 9, 0 };
    for (int i = 122345; i <= 543221; i++) {
    boolean b = false;
    for (int j = 0; j < bits.length; j++) {

    if (("" + i).indexOf("" + bits[j]) >= 0) {
    b = true;
    break;
    }
    }
    if (b == false) {
    if (("" + i).substring(2, 3).equals("4") == false) {
    if (("" + i).indexOf("35") == -1) {
    System.out.println(i);
    }
    }
    }
    }

    }

    # re: Java經(jīng)典算法集[未登錄] 2013-11-21 01:28 titan

    public class SoftTest {
    public static void main(String[] args)
    {
    for(int i=122345; i<=543221 ;i++ )
    {
    String s = String.valueOf(i);
    if(s.indexOf("2")>=0&&s.indexOf("3")>=0&&s.indexOf("4")>=0&&s.indexOf("5")>=0&& s.indexOf("4")!=2&&s.indexOf("1")>=0&&s.indexOf("35")==-1&&s.indexOf("53")==-1&&s.indexOf("2",s.indexOf("2")+1)>=0)
    {
    System.out.println(i);
    }

    }
    }
    }

    # re: Java經(jīng)典算法集 2014-04-17 20:09 大額_skylar

    @迷迷
    錯(cuò)了...有重復(fù)的數(shù)字,不能算是不同的排列,數(shù)字排列一個(gè)數(shù)字不能出現(xiàn)兩次

    # re: Java經(jīng)典算法集 2014-04-24 20:11 scdxcc

    public class Test {
    public static void main(String[] args) {
    for (int i = 122345; i <= 543221; i++) {
    String s = String.valueOf(i);
    if ((s.charAt(2) != '4')
    && (Math.abs(s.indexOf("3") - s.indexOf("5")) > 1)
    && (s.indexOf("0") == -1) && (s.indexOf("6") == -1)
    && (s.indexOf("7") == -1) && (s.indexOf("8") == -1)
    && (s.indexOf("9") == -1) && find(s, '1') == 1
    && find(s, '2') == 2 && find(s, '3') == 1
    && find(s, '4') == 1 && find(s, '5') == 1) {
    System.out.println(i);
    }

    }
    }

    public static int find(String s, char d) {
    int count = 0;
    for (int i = 0; i < s.length(); i++) {
    if (s.charAt(i) == d) {
    count++;

    }

    }

    return count;
    }
    }

    # re: Java經(jīng)典算法集[未登錄] 2014-06-24 16:45 牛牛

    @大額_skylar
    package niuce.common.arith;

    public class PlusSort {

    public static void main(String[] args) {
    getAllSerizes(new int[]{2,4,8,2,6});
    }

    public static int[] bubleSort(int[] nums){
    int temp=0;
    for(int i=nums.length-1;i>0;i--){
    for(int j=0;j<i;++j){
    if(nums[j+1]<nums[j]){
    temp=nums[j];
    nums[j]=nums[j+1];
    nums[j+1]=temp;
    }
    }
    }
    return nums;
    }

    public static void getAllSerizes(int[] nums){
    int[] zn=bubleSort(nums);
    String minNum="";
    String maxNum="";
    String flag="";
    for(int i=0;i<zn.length;i++){
    minNum+=zn[i];
    maxNum+=zn[zn.length-i-1];
    flag+="a";
    }
    int inMin=Integer.parseInt(minNum);
    int inMax=Integer.parseInt(maxNum);
    for(int i=inMin;i<=inMax;i++){
    String temp=Integer.toString(i);
    for(int j=0;j<zn.length;j++){
    temp=temp.replaceFirst(Integer.toString(zn[j]),"a");
    }
    if(flag.equalsIgnoreCase(temp)){
    System.out.println(i);
    }
    }
    }
    }

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 99ri精品国产亚洲| 最近免费2019中文字幕大全| 亚洲成aⅴ人片在线观| 亚洲精品国产综合久久一线| 99久久久精品免费观看国产| 久久er国产精品免费观看2| 免费VA在线观看无码| 亚洲色大成网站WWW国产| 亚洲经典在线观看| 亚洲精品无码不卡在线播放HE| 俄罗斯极品美女毛片免费播放| 大学生一级毛片免费看| 久久免费视频99| 成在人线av无码免费高潮水 | 免费无码又爽又刺激一高潮| 亚洲av无码一区二区三区人妖| 亚洲精品成人图区| 一区二区三区亚洲| 亚洲好看的理论片电影| 亚洲国产精品久久久天堂| 国产精品亚洲精品日韩已方| 亚洲av手机在线观看| 国产jizzjizz免费视频| 日本不卡在线观看免费v| 成年人视频在线观看免费| 99在线视频免费观看视频| 波多野结衣免费在线| 久久免费看黄a级毛片| 最近免费中文字幕大全免费版视频 | 中文字幕乱码系列免费| 精品无码一级毛片免费视频观看 | 三上悠亚亚洲一区高清| 亚洲午夜精品一级在线播放放| 亚洲AV无码一区二三区| 亚洲国产精品人人做人人爱| 免费国产一级特黄久久| 亚洲国产成人VA在线观看| 国产精品亚洲综合专区片高清久久久| 国产亚洲欧洲Aⅴ综合一区| 国产亚洲精品美女久久久| 久久久久亚洲AV片无码|