hihoCoder題二 : 補提交卡詳解(C#題庫)
阿新 • • 發佈:2018-12-25
using System; using System.Collections.Generic; namespace ConsoleApp4 { class Program { static void Main(string[] args) { int T = Convert.ToInt32(Console.ReadLine());//測試資料的組數 List<int> days = new List<int>();//儲存資料的組數的最大連續天數結果 for (int j = 0; j < T; j++) { string NM = Console.ReadLine();//儲存未簽到天數總數以及補提交卡數 string[] data = (Console.ReadLine()).Split(' ');//儲存未儲存天數的具體資料 int n = Convert.ToInt32(NM.Split(' ')[0]);//n未簽到天數總數 int m = Convert.ToInt32(NM.Split(' ')[1]);//m補提交卡數 int[] notSignDays = new int[n + 2]; notSignDays[n + 1] = 100; notSignDays[0] = 0; //0 34 77 82 83 84 100 //0 1 2 3 4 5 6 for (int i = 1; i < notSignDays.Length - 1; i++) { notSignDays[i] = Convert.ToInt32(data[i - 1]); } int continuityMaxDays = 0; if (m >= n) { continuityMaxDays = 100; } else { for (int i = 1; i < notSignDays.Length - m; i++) { #region 總結規律 ////m=1 n=5 ////1 //notSignDays[1+m] - notSignDays[1-1]-1; ////2 //notSignDays[2+m] - notSignDays[2-1] - 1; ////3 //notSignDays[3+m] - notSignDays[3-1] - 1; ////4 //notSignDays[5] - notSignDays[3] - 1; ////5 //notSignDays[6] - notSignDays[4] - 1; ////m=2 n=5 ////1 1+M - 1-1 //notSignDays[3] - notSignDays[0] - 1; ////2 //notSignDays[4] - notSignDays[1] - 1; ////3 //notSignDays[5] - notSignDays[2] - 1; ////4 //notSignDays[6] - notSignDays[3] - 1; #endregion if (notSignDays[i + m] - notSignDays[i - 1] - 1 > continuityMaxDays) { continuityMaxDays = notSignDays[i + m] - notSignDays[i - 1] - 1; } } } days.Add(continuityMaxDays); } foreach (var item in days) { Console.WriteLine(item); } Console.ReadKey(); } } }