大根畑の問題を解決する C# アルゴリズム

大根畑の問題を解決する C# アルゴリズム

ニンジン畑問題を解決するための C# アルゴリズムは何ですか?まずトピックを見てみましょう:

仕事へ向かって歩いている途中で、大根畑のそばを通りかかったとします。フィールドの形状は長方形のグリッドです。

フィールドの i 番目の要素の j 番目の文字は、フィールドの i 行目と j 列目のグリッドに含まれる大根の数を表します。

グリッドの特殊性は、その周囲のすべてのグリッド内のニンジンの数の合計として定義されます。周囲のグリッドには、そのグリッドの上、下、左、右、および斜めに隣接するグリッドが含まれます。

タイルは最大 8 枚あり、フィールドの境界ではタイルの数が少なくなります。グリッドの周囲に他のグリッドがない場合、そのグリッドの一意性は 0 になります。

フィールド内で特異度が A と B の間 (A と B を含む) にあるすべてのセルの数を返してください。

意味

クラス: NumberField

メソッド: countSpecialNumbers

パラメータ: string[], int, int

戻り値: int

メソッドシグネチャ: int countSpecialNumbers(string[] field, int A, int B)

(メソッドがパブリックであることを確認してください)

制約

- フィールドには 1 から 50 までの要素が含まれます。

- フィールドの各要素には、1 文字から 50 文字までが含まれます。

- フィールドの各要素には同じ数の文字が含まれます。

- フィールドの各要素は「0」から「9」までの文字です。

- A の範囲は 0 から 100 までです。

- B の範囲は A から 100 までになります。

C# アルゴリズムの具体的な実装は次のとおりです。

  1. システムの使用;
  2. System.Collections.Genericを使用します
  3. System.Textを使用します
  4.  
  5. 名前空間フィールド
  6. {
  7.      /// <要約>  
  8.      /// 2009.6.1 アンとフーイエス 
  9.      /// </要約>  
  10.    公共 クラスNumberField
  11. {
  12.         静的  void Main(文字列[]引数)
  13. {
  14.  
  15.              //テスト 。  
  16.             文字列[] フィールドx = {
  17.     "1234567890"
  18.      "1234567890"
  19.      "1234567890"
  20.     "1234567890"
  21.        "1234567890"
  22.     "1234567890"
  23.     "1234567890"
  24.     "1234567890"
  25.     "1234567890"
  26.     "1234567890"
  27.     "1234567890" };
  28.  
  29.              int r = countSpecialNumbers(フィールドx、3、18);
  30.  
  31. コンソールに行を書き込む
  32. コンソールの読み取り();
  33. }
  34.          /// <要約>  
  35.          /// i,j グリッド内のニンジンの数を取得します 
  36.          /// </要約>  
  37.          /// <param name="i">行</param>  
  38.          /// <param name="j">列</param>  
  39.          /// <param name="フィールドx"></param>  
  40.          /// <戻り値></戻り値>  
  41.         公共 静的  int fij( int i, int j,文字列[] フィールドx)
  42. {
  43.              int右辺値 = 0;
  44.  
  45.              (i < 0 || j < 0)の場合
  46. {
  47.                  0を返します
  48. }
  49.  
  50.              int y = fieldx.Length - 1; //行 
  51.              int x = fieldx[0].Length - 1; //列 
  52.  
  53.             もし((i > y) || (j > x))
  54. {
  55.                  0を返します
  56. }
  57.             文字列f = フィールドx[i];
  58.             バイト[] hooyesBy = System.Text.Encoding.ASCII.GetBytes(f);
  59.              char xB = ( char )hooyesBy[j];
  60. 右辺値 = int .Parse(xB.ToString());
  61.             右辺値を返します
  62. }
  63.          /// <要約>  
  64.          /// i,j 番目のグリッドの特殊次数を取得します 
  65.          /// </要約>  
  66.          /// <param name="i">行</param>  
  67.          /// <param name="j">列</param>  
  68.          /// <param name="フィールドx"></param>  
  69.          /// <戻り値></戻り値>  
  70.         公共 静的  int fsp( int i, int j,文字列[] フィールドx)
  71. {
  72.              int右辺値 = 0;
  73. 右辺値 = fij(i - 1, j, フィールドx) +
  74. fij(i + 1, j, フィールドx) +
  75. fij(i, j - 1, フィールドx) +
  76. fij(i, j+1, フィールドx) +
  77. fij(i - 1, j - 1, フィールドx) +
  78. fij(i + 1, j + 1, フィールドx) +
  79. fij(i - 1, j + 1, フィールドx) +
  80. fij(i + 1, j - 1, フィールドx);
  81.             右辺値を返します
  82. }
  83.          /// <要約>  
  84.          /// AとBの間の特別な度合いを満たすグリッドの数を返します 
  85.          /// </要約>  
  86.          /// <param name="フィールド"></param>  
  87.          /// <param name="A">特別性の下限</param>  
  88.          /// <param name="B">特技上限</param>  
  89.          /// <戻り値></戻り値>  
  90.         公共 静的  int countSpecialNumbers(文字列[] フィールド、 int A、 int B)
  91. {
  92.              int右辺値 = 0;
  93.              //int i = 0;  
  94.              //int j=0;  
  95.              int y = field.Length-1; //行 
  96.              int x = field[0].Length-1; //列 
  97.              ( int i = 0; i <= y; i++)の場合
  98. {
  99.                  ( int j = 0; j <= x; j++)の場合
  100. {
  101.                      int tInt = fsp(i, j, フィールド);
  102.                      (tInt >= A && tInt <= B)の場合
  103. {
  104. 右辺値++;
  105. }
  106.  
  107. }
  108.  
  109. }
  110.  
  111.             右辺値を返します
  112. }
  113. }
  114. }

これで C# アルゴリズムの紹介は終わりです。これが C# アルゴリズムの理解に役立つことを願っています。

<<:  C# アルゴリズム アプリケーションでのガウス消去法の実装

>>:  C# アルゴリズムで実装された文字列反転の簡単な分析

推薦する

Open LLM リストが再び更新されました。Llama 2 よりも強力な「Duckbill Puss」が登場します。

OpenAI の GPT-3.5 や GPT-4 などのクローズドソース モデルの優位性に挑戦する...

人工知能の時代において、ロボットを超える子どもたちが身につけるべき能力とは何でしょうか?

[[428042]]今後予測できることは、人工知能の時代が徐々に深まり、私たちの生活がSF映画のリ...

これら 19 の主流 AI テクノロジーについて、どの企業がサービスを提供しているかご存知ですか?

[51CTO.com クイック翻訳] 自然言語生成や音声認識などの分野を中心に、現在主流となってい...

...

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

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

ガートナー: データサイエンスと機械学習の未来に影響を与える 5 つのトレンド

Gartner, Inc. は、人工知能のデータ需要を満たすために急速に進化している分野であるデータ...

BiLSTMとCRFアルゴリズムを徹底的に理解する

CRF は、品詞タグ付け、単語分割、固有表現認識などのタスクに使用できる、一般的に使用されるシーケン...

...

MIT: この AI ソックスはあなたの行動を明らかにします | Nature サブジャーナル

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

AIキーボード戦士が登場: DeepMindがエージェントのトレーニングを開始、コンピューターを人間のように「操作」

機械が人間のようにコンピューターを使用できる場合、機械は私たちが日常のタスクを完了するのを手助けする...

人工知能は神経技術をどのように進歩させるのでしょうか?

ニューロテクノロジーは人間の神経系の原理に基づいており、人間の脳の極めて複雑なモデル構造を研究するこ...

機械学習は増加傾向にありますが、そのアルゴリズムの結果は公正なのでしょうか?

アルゴリズムは驚くべき方法で私たちの生活をコントロールしています。地元のデリのカウンターで番号を受け...

最強のやつでもGPT-4Vに合格できないの?大学入試をベースとしたテストベンチマーク「MMMU」が誕生

GPT-4V と大学生のどちらが良いでしょうか?まだ分​​かりませんが、新しいベンチマーク データセ...

HSBC、コロナウイルス危機中にAIガードレールを導入

規制の厳しい業界の企業は、AI を導入しようとすると、いわゆる「ブラック ボックス」問題に直面するこ...