C#练习题答案: 简单有趣#399:请升序序列【难度:1级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战

mac2024-10-24  50

简单有趣#399:请升序序列【难度:1级】:

答案1:

public class Kata { public static int MakeSequences(int n) { var arr = new int[n/2 + 1]; arr[0] = 1; return msHelper(n, ref arr); } private static int msHelper(int n, ref int[] arr) { if (arr[n/2] == 0) { arr[n/2] = msHelper(n - 2, ref arr) + msHelper(n / 2, ref arr); } return arr[n/2]; } }

答案2:

using System.Collections.Generic; public class Kata { private static List<int> cache = new List<int>() { 1, 1 }; public static int MakeSequences(int n) { for(int i = cache.Count, j = i - 1; j < n; ++i, ++j) { cache.Add(cache[j] + ((j &amp; 1) * cache[i>>1])); } return cache[n]; } }

答案3:

using System.Collections.Generic; public class Kata { private static List<int> cache = new List<int>{ 1 }; public static int MakeSequences(int n) { if (cache.Count <= n/2) cache.Add( MakeSequences(n - 2) + MakeSequences(n / 2) ); return cache[n/2]; } }

答案4:

using System.Collections.Generic; using System.Linq; public class Kata { private static List<int> cache = new List<int>() { 1, 1 }; public static int MakeSequences(int n) { for(int i = cache.Count, j = i - 1; j < n; ++i, ++j) { cache.Add(cache[j] + ((j &amp; 1) * cache[i>>1])); } return cache[n]; } }

答案5:

using System; public class Kata { public static int MakeSequences(int n) { var values = new int[n]; values[0] = 1; for (var i = 1; i < n; i++) values[i] = values[i - 1] + (i % 2 == 0 ? 0 : values[(i + 1) / 2 - 1]); return values[n - 1]; } }

答案6:

using System.Collections.Generic; using System.Linq; public class Kata { public static List<int> zestaw = new List<int> { 1, 1, 2, 2, 4, 4, 6, 6, 10, 10, 14, 14, 20, 20, }; public static int MakeSequences(int n) { int temp = zestaw.Count; while(temp <= n) { int check = zestaw.Take(temp / 2 + 1).Sum(); zestaw.Add(check); zestaw.Add(check); temp += 2; } return zestaw[n]; } }

答案7:

public class Kata { private static int[] seqs = new int[1100]; static Kata() { seqs[0] = 1; seqs[1] = 1; for (int i = 1; i < 550; i++) { seqs[2 * i] = seqs[2 * i - 1] + seqs[i]; seqs[2 * i + 1] = seqs[2 * i]; } } public static int MakeSequences(int n) => seqs[n]; }

答案8:

using System.Collections.Generic; public class Kata { public static int MakeSequences(int n) { var dp=new List<int>(){1,1}; for(int i=2;i<=n;i++){ if(i%2==0) dp.Add(dp[i-1]+dp[i/2]); else dp.Add(dp[i-1]); } return dp[n]; } }
最新回复(0)