大根畑の問題を解決する 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# アルゴリズムで実装された文字列反転の簡単な分析

推薦する

Apple、新しいGPUアクセラレーションツールCreate MLをリリース

Appleは本日、カリフォルニア州サンノゼで2018年ワールドワイド開発者会議を開催し、4つの主要な...

マイクロソフトの自動運転戦略:自動車を製造するのではなく、企業に技術サポートとクラウドサービスを提供する

ゼネラル・モーターズ傘下の自動運転車開発会社クルーズは、マイクロソフト、ゼネラル・モーターズ、ホンダ...

数秒で理解:小売業における画像認識

【51CTO.comオリジナル記事】スーパーマーケットに入ったところを想像してみてください。計量のた...

...

量子コンピューティングの画期的な論文3本がネイチャーの表紙に登場:忠実度は99%を超え、実用レベルに到達

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

グラフニューラルネットワークは CV の未来でしょうか?中国科学院ソフトウェア研究所は、ViTを上回る新しいCVモデルViGをリリースした。

コンピュータービジョンのネットワーク構造は新たな革命を迎えようとしているのでしょうか?畳み込みニュー...

目に見えない戦場の技術である人工知能は、サイバー戦争にどのように応用できるのでしょうか?

[[339414]]英国のジェーンズ・ディフェンスのウェブサイトによると、米国防高等研究計画局のピ...

自動運転は「終焉」に向かっている

技術導入への困難な道のりは、特定の客観的な法則に従わなければならず、それはいかなる利害関係者の意見に...

なぜ人工知能にはブロックチェーンが必要なのでしょうか?

この記事では、人工知能にブロックチェーンが必要な理由、人工知能がブロックチェーンに与える影響、ブロッ...

人工知能は世界を支配するのでしょうか?

技術が急速に進歩する時代において、人工知能 (AI) が最終的に世界を支配するかどうかという差し迫っ...

ChatGPT がリリースされてから 1 年が経ちました。主要なオープン ソース モデルはすべて追いついたのでしょうか?

1年前の今日、ChatGPTが誕生し、人工知能の新しい時代が到来したように思えました。 ChatG...

...

「人工バカ」、いつまで我慢できるの?

[[251715]]毎年、メディアでは AI の失敗に関する報道が見られます。なぜこのようなばかげ...

...

顔認識は壊れているのでしょうか?心配しないでください。「フェイスプロテクションプラン」が始まります

かつて、顔認識は人々が非常に信頼する技術でした。生産と生活に利便性、効率性、正確性をもたらしたため、...