文字の組み合わせをソートする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は一般的な組み合わせアルゴリズムを実装する

ブログ    

推薦する

学生の未来を照らすSquirrel AIは、すべての子供にAIスーパー教師を授けます

[51CTO.com からのオリジナル記事] 人工知能技術のさらなる進歩により、教師が本来行わなけれ...

深層強化学習の謎を解く

【51CTO.com クイック翻訳】 深層強化学習は、人工知能の最も興味深い分野の 1 つです。ボー...

...

ネットワーク管理における機械学習の応用は何ですか?

ネットワークが自動化とインテリジェンス化に向かう​​につれ、ネットワークの問題をプログラムで特定し、...

App Store 中国、検索アルゴリズムを最適化:名前による検索を復活

約1週間の不安が去った後、国内のiOSアプリ開発者はようやく落ち着くことができた。中国におけるApp...

MITの科学者が数時間でロボットヒトデを作る新システムを設計

水中の海洋生物を研究する場合、動物たちにとって不自然に見えて怖がらせないような装置を使うと役に立つで...

大規模な伝染病に直面した時、ロボットは何ができるでしょうか?

ウイルスのさらなる拡散を防ぐため、米国で初めて新型肺炎に感染した患者は隔離室に隔離され、治療中はロボ...

海洋工学における生成AI:独自のデータセットが不十分なため、実用化が制限されている

現代のコンピューティングは造船や海洋工学における設計および建設プロセスを大幅に改善していますが、限ら...

人工知能とモノのインターネット (AIoT) を組み合わせた場合の威力とは?

モノのインターネット (IoT) や人工知能 (AI) について聞いたことがあると思います。しかし、...

顔認識で間違った人物が「捕まった」ため、その人物は10日間刑務所に収監された

それはとんでもないことだ。何もしてないのに理由もなく10日間警察に拘留されるんですか? ! [[39...

Unity が開発者向け AI ソフトウェア マーケットプレイス AI Hub を立ち上げ、株価が 15% 上昇

6月28日、Unityは開発者向けAIソフトウェアマーケット「AI Hub」を正式に立ち上げ、AIソ...

サイバー防御にAIを活用する

サイバー防御能力は、より高度なサイバー攻撃能力の発展に追いつくのに苦労している。人工知能、特に最先端...

AIブーム下のレイアウトトレンド

2016年3月にアルファ碁が囲碁の世界チャンピオン、イ・セドルを破って以来、人工知能は大きな注目を集...

アメリカ心理学会:AIと頻繁に接触する従業員は孤独になりやすく、病気のリスクも高まる

アメリカ心理学会は6月14日、「AIと頻繁に接触する従業員は孤独になりやすく、病気のリスクも高まる」...

...