文字の組み合わせをソートするJavaアルゴリズム

文字の組み合わせをソートするJavaアルゴリズム

Java の文字の組み合わせソートは、特に難しい問題ではありません。ブルートフォースとグラフ理論 (深さトラバーサル) の両方が可能で、結果は 198 です。グラフ理論は、無向グラフを構築し、深さ優先再帰を行うことです。
タイトル: 1、2、2、3、4、5 の 6 つの数字を使用して、512234、412345 などのさまざまな配置をすべて出力するメイン関数を Java で記述します。要件は、「4」を 3 番目の位置に配置できないことと、「3」と「5」を接続できないことです。

Javaコード:

  1. パッケージ com.graphic;
  2. java.util.Iterator をインポートします。
  3. java.util.TreeSet をインポートします。
  4. パブリッククラスCharSequence{
  5. プライベートString[] c = {"1","2","2","3","4","5"};
  6. プライベートint n = c .length;
  7. プライベートboolean[]訪問=新しいboolean[n];
  8. プライベート int[][] g = new int[n][n];
  9. プライベート TreeSet ts = new TreeSet();
  10. プライベート文字列結果= "" ;
  11. パブリックCharSequence(){
  12. for(int i = 0 ; i
  13. for(int j = 0 ; j
  14. i == jの場合、g[i][j] = 0;
  15. それ以外の場合g[i][j] = 1;
  16. }
  17. }
  18. 3[3][5] = 0;
  19. 5 3 = 0;
  20. }
  21. パブリックvoid depthFirst(intインデックス){
  22. 訪問[インデックス] = true;
  23. 結果 += c[インデックス];
  24. if(result.length() == n){
  25. ts.add(結果);
  26. 結果result = result.substring(0,result.length()-1);
  27. 訪問[インデックス] = false;
  28. }
  29. それ以外{
  30. for(int i = 0 ; i
  31. if(!visited[i] && g[index][i] == 1){
  32. 深さ優先(i);
  33. }そうでない場合は続行します。
  34. }
  35. 結果result = result.substring(0,result.length()-1);
  36. 訪問[インデックス] = false;
  37. }
  38. }
  39. パブリック void グラフィック取得(){
  40. for(int i = 0 ; i
  41. 深さ優先(i);
  42. }
  43. 整数カウント= 0 ;
  44. System.out.print("グラフ理論の結果: ");
  45. イテレータit = ts .iterator();
  46. while(it.hasNext()){
  47. 文字列tmp = it .next();
  48. if(tmp.contains("35")) 続行します。
  49. if(tmp.contains("53")) 続行します。
  50. if(tmp.charAt(3) == '4') 継続;
  51. システム出力をprintln(tmp);
  52. カウント++;
  53. }
  54. System.out.println("合計: "+count+"");
  55. }
  56. パブリック void ブルートフォース(){
  57. System.out.println("ブルートフォース検索の結果: ");
  58. 整数カウント= 0 ;
  59. (int i = 122345 ; i < 543222 ; i++){
  60. 文字列tmp = "" +i;
  61. if(tmp.charAt(3) == '4') 継続;
  62. if(tmp.contains("35")) 続行します。
  63. if(tmp.contains("53")) 続行します。
  64. if(tmp.contains("5") && tmp.contains("4") && tmp.contains("3") && tmp.contains("1"))
  65. {
  66. intインデックス= tmp.indexOf ("2");
  67. if(インデックス== -1) 継続;
  68. if( index == tmp.length()-1) 継続;
  69. if(tmp.substring(index+1).contains("2")){
  70. システム出力をprintln(tmp);
  71. カウント++;
  72. }
  73. }
  74. }
  75. System.out.print("合計: "+count+"");
  76. }
  77. パブリック void recrusive(){
  78. }
  79. パブリック静的voidメイン(String[] args) {
  80. CharSequence cs =新しいCharSequence();
  81. //グラフ理論法
  82. cs.graphicGet();
  83. // ブルートフォース検索
  84. cs.bruteForce();
  85. }
  86. }

この例がお役に立つことを願っています。次の記事では、Java ソートアルゴリズムの概要を紹介します。

【編集者のおすすめ】

  1. Java による CSV 読み取りの実践についての簡単な説明
  2. Javaアプリケーションのパフォーマンスに関する3つの一般的な課題
  3. インターネット開発に Java を使用する利点は何ですか?
  4. Java マルチスレッド プログラミングの詳細な分析

<<:  Javaソートアルゴリズムの概要(I):挿入ソート

>>:  Javaは一般的な組み合わせアルゴリズムを実装する

ブログ    

推薦する

ChatGPTが使用する機械学習技術

著者 |ブライト・リャオ「プログラマーから見たChatGPT」の記事では、開発者のChatGPTに対...

人工知能やモノのインターネットから仮想現実やブロックチェーンまで、将来の技術進歩の大部分はクラウドで起こるだろう。

今では、ほとんどの企業リーダーがクラウド コンピューティングの価値を理解しています。すでに多くの人が...

携帯電話のAI分析で貧困削減を狙う:バークレーの研究がネイチャー誌に掲載

COVID-19パンデミックは多くの低・中所得国に壊滅的な打撃を与え、食糧不安の拡大と生活水準の急激...

...

...

...

このレビューでは、5年間にわたる89の研究を数え、ディープラーニングにおけるコードデータ拡張がどのように進んでいるかを示しています。

今日のディープラーニングと大規模モデルの急速な発展により、革新的なテクノロジーの絶え間ない追求がもた...

...

Ma Yiチームの新作!大規模なマルチモーダルモデルを微調整すると、「壊滅的な忘却」につながり、パフォーマンスが大幅に低下する可能性があります。

モデルの壊滅的な忘却は現在重要なホットトピックとなっており、GPT-4 でもそれを回避することはでき...

Googleの視覚言語モデルPaLI-3がリリースされました。パラメータはわずか50億で、より小さく、より高速で、より強力です。

大規模モデルの時代では、視覚言語モデル (VLM) のパラメータは数百億、さらには数千億にまで拡大し...

...

...

コードを自動生成できるAIベースの開発ツール5選

今日、機械学習の可能性に関心を持つプログラマーは、人工知能と AI ベースのソフトウェア開発ツールを...

...

スマートな薬箱が登場したが、その背後にあるAIの能力を過小評価してはならない

薬を買うとき、自動販売機のように、セルフサービス機で直接注文して、必要なときにすぐに受け取ることはで...