溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么用C#算法解決蘿卜地問題

發(fā)布時(shí)間:2021-07-15 15:12:16 來源:億速云 閱讀:129 作者:chen 欄目:編程語言

這篇文章主要介紹“怎么用C#算法解決蘿卜地問題”,在日常操作中,相信很多人在怎么用C#算法解決蘿卜地問題問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”怎么用C#算法解決蘿卜地問題”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

C#算法解決蘿卜地問題是什么呢?首先讓我們來看看題目:

話說你在走路上班時(shí),經(jīng)過一片種植蘿卜的農(nóng)田。這塊田地的形狀是一個(gè)矩形的網(wǎng)格。

field的第i個(gè)元素的第j個(gè)字符,表示田地的第i行第j列的格子里包含的蘿卜的數(shù)目。

我們定義一個(gè)格子的特殊程度為它周圍所有格子的蘿卜個(gè)數(shù)的和; 它周圍的格子包含它上下左右以及對(duì)角相鄰的格子,

最多有8個(gè),在田地的邊界上的格子會(huì)少一些。如果一個(gè)格子周圍沒有別的格子,則它的特殊程度為0。

請(qǐng)返回田地中特殊程度在A和B之間的所有格子的數(shù)目(包含A,B)。

Definition

Class:  NumberField

Method:  countSpecialNumbers

Parameters:  string[], int, int

Returns:  int

Method signature:  int countSpecialNumbers(string[] field, int A, int B)

(be sure your method is public)

Constraints

-  field 包含1個(gè)到50個(gè)元素,含1和50。

-  field的每個(gè)元素包含1個(gè)到50個(gè)字符,含1和50。

-  field的每個(gè)元素包含相同的字符數(shù)。

-  field的每個(gè)元素的字符均為’0’到’9’之一。

-  A的范圍會(huì)在0到100之間,含0和100。

-  B 的范圍會(huì)在A到100之間,含A和100。

C#算法的具體實(shí)現(xiàn)如下:

using System;  using System.Collections.Generic;  using System.Text;   namespace Field  {      /// <summary>      /// 2009.6.1 with ann by hooyes      /// </summary>     public class NumberField      {          static void Main(string[] args)          {               //Test .              string[] fieldx ={     "1234567890",      "1234567890",      "1234567890",     "1234567890",        "1234567890",     "1234567890",     "1234567890",     "1234567890",     "1234567890",     "1234567890",     "1234567890"};               int r = countSpecialNumbers(fieldx, 3, 18);               Console.WriteLine(r);              Console.Read();          }          /// <summary>          /// 獲取第i,j格的蘿卜數(shù)          /// </summary>          /// <param name="i">行</param>          /// <param name="j">列</param>          /// <param name="fieldx"></param>          /// <returns></returns>          public static int fij(int i, int j,string[] fieldx)          {              int Rvalue = 0;               if (i < 0 || j < 0)              {                  return 0;              }               int y = fieldx.Length - 1; //行              int x = fieldx[0].Length - 1; //列               if ((i > y) || (j > x))              {                  return 0;              }              string f = fieldx[i];              byte[] hooyesBy = System.Text.Encoding.ASCII.GetBytes(f);              char xB = (char)hooyesBy[j];              Rvalue = int.Parse(xB.ToString());              return Rvalue;          }          /// <summary>          /// 獲取第i,j格的特殊度          /// </summary>          /// <param name="i">行</param>          /// <param name="j">列</param>          /// <param name="fieldx"></param>          /// <returns></returns>          public static int fsp(int i, int j, string[] fieldx)          {              int Rvalue = 0;              Rvalue = fij(i - 1, j, fieldx) +     fij(i + 1, j, fieldx) +     fij(i, j - 1, fieldx) +     fij(i, j+1, fieldx) +     fij(i - 1, j - 1, fieldx) +     fij(i + 1, j + 1, fieldx) +     fij(i - 1, j + 1, fieldx) +     fij(i + 1, j - 1, fieldx);              return Rvalue;          }          /// <summary>          /// 返回滿足特殊度在A至B之間的格子數(shù)          /// </summary>          /// <param name="field"></param>          /// <param name="A">特殊度下限</param>          /// <param name="B">特殊度上限</param>          /// <returns></returns>          public static int countSpecialNumbers(string[] field, int A, int B)          {              int Rvalue = 0;              //int i=0;              //int j=0;              int y = field.Length-1; //行              int x = field[0].Length-1 ; //列              for (int i = 0; i <=y; i++)              {                  for (int j = 0; j <=x;j++)                  {                      int tInt = fsp(i, j, field);                      if (tInt >= A && tInt <= B)                      {                          Rvalue++;                      }                   }               }               return Rvalue;          }      }  }

到此,關(guān)于“怎么用C#算法解決蘿卜地問題”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI