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

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

コンピュータビジョンディープラーニングにおける8つのよくあるバグ

コンピューター ビジョンのディープラーニングでよくある 8 つのバグをまとめました。誰もが多かれ少な...

機械学習とデータサイエンスは戦略的な洞察を提供する

デジタル時代では、データが新たな通貨になりました。世界中の組織が、その大きな可能性を引き出すために機...

...

人工知能は医療現場の診断や治療の決定に役立つ

必要な変更。医療制度と支払者(政府と民間の両方)において、この用語は患者への不必要なリスク、医療の質...

...

人工知能に関する3カ年国家戦略が発表されました。8つの主要分野が注目されます。

昨日、工業情報化部が突然、人工知能に関するもう一つの重要な赤字文書を発行しました!文書では、2018...

...

Facebookの詐欺行為と戦う方法を学び、CopyCatchアルゴリズムがLockstepをどのように解決するかを見てみましょう

[51CTO.com クイック翻訳] インターネットが誕生して以来、あらゆる種類のジャンク情報や悪意...

...

Baidu Brainは、顔をスキャンしてWeChat Momentsで拡散できるAIベースの春節連句をサポート

大晦日、家族が集まる夜。 1月28日、オンライン春節祝賀会(略称オンライン春節祝賀会)が予定通り開催...

顔認識技術の倫理

顔認識技術がさまざまな分野で持つ大きな可能性は、ほとんど想像できないほどです。ただし、最も洗練された...

なぜほとんどの経営幹部は自社がAI導入の準備ができていないと考えているのか

この分野の専門家は、AI技術が従業員に大きな変化をもたらし、企業のビジネスのやり方を変えていると述べ...

張亜琴氏と張宏江氏は人工知能の将来について何を語っているのでしょうか?

「大規模なシステムを構築するには、体系的な思考、実践的なスキル、システム構築への愛情を持った人材が...

人工知能は目覚めたのか?アマゾンのAIは人間の命令を聞かず不気味な笑い声を上げる

人類が人工知能の開発に熱心に取り組み始めて以来、著名な科学者ホーキング博士をはじめ、疑問や反対の声が...