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

ブログ    
ブログ    

推薦する

今後10年間の主要な投資の方向性を予測して、あなたは未来に向けて準備ができていますか?

古代から今日のモバイルインターネット時代に至るまで、人類の誕生以来、世界に影響を与えてきたあらゆる破...

自動運転テストシステムを1つの記事で理解する

[[433515]]自動運転のテストは非常に複雑なシステムです。この記事では、小さなものから大きなも...

セキュリティ業界における顔認証アクセス制御の発展展望

数年前までは、アクセス制御は鍵や IC アクセス カードによって行われていたことは誰もが知っています...

AI起業家にとって、これら4つの新たな方向性は注目に値するかもしれない

AI 起業家にとって、次の 4 つの新しい方向性は注目する価値があるかもしれません。第 1 に、人間...

ワシントンポスト紙の李開復氏のコラム:お金を与えることでAI失業危機は解決するのか?シリコンバレーの大物は世間知らずすぎる

AI革命が到来し、それは最良の時代になるかもしれないし、最悪の時代になるかもしれない。それが良いこと...

...

人工知能技術は人間の生活にどのような影響を与えるのでしょうか?

[[349271]]人工知能と産業の組み合わせは、中国市場の爆発的な成長を促進し、中国のモバイルイ...

IDC: 生成型AIへの世界的な支出は2027年に1,430億ドルに達する

IDC は最近、世界中の企業による生成 AI サービス、ソフトウェア、インフラストラクチャへの支出が...

...

ロボティックプロセスオートメーションが人々の働き方をどのように変えているのか

[[422319]] RPA は人々の働き方をどのように変えるのでしょうか?今日、さまざまな業界の組...

...

人工知能があなたの生活を変える10の方法

人類は歴史の中で長い道のりを歩んできましたが、現在の技術の進歩は人類の進歩のペースを加速させ、すべて...

人工知能技術はどのようにビジネスに統合されるのでしょうか?

AI技術の発展の歴史は数十年前に遡りますが、1970年代から1980年代までの初期段階では、ビジネ...