|
|
вернуться в форум(C# )Memory limit exceeded ,WHY? First: using System; using System.Text.RegularExpressions; class Program { static void Main(string[] args) { int lenNum = int.Parse(Console.ReadLine()); for (int i = 0; i < lenNum; i++) { if (Regex.IsMatch(Console.ReadLine(), "^(?:one|out(?:put)?|in(?:put)?|puton)+$")) Console.WriteLine("YES"); else Console.WriteLine("NO"); } }} Second: using System; class Program { static void Main(string[] args) { int lenNum = int.Parse(Console.ReadLine()); for (int i = 0; i < lenNum; i++) { if (Console.ReadLine().Replace("one","").Replace("puton","").Replace("output","").Replace("input","").Replace("out","").Replace("in","")=="") Console.WriteLine("YES"); else Console.WriteLine("NO"); } }} THIRD: using System; class Program { static void Main(string[] args) { int lenNum = int.Parse(Console.ReadLine()); for (int i = 0; i < lenNum; i++) Console.WriteLine(Judge(Console.ReadLine())); } static string Judge(string input) { int pos = 0; for (int i = input.Length - 1; i >= 0; i--) { pos++; if (pos == 1||pos==4) continue; else if (pos == 2) { if (input.Substring(i, pos) == "in") pos = 0; else continue; } else if (pos == 3) { if (input.Substring(i, pos) == "one" || input.Substring(i, pos) == "out") pos = 0; else continue; } else if (pos == 5) { if (input.Substring(i, pos) == "input" || input.Substring(i, pos) == "puton") pos = 0; else continue; } else { if (input.Substring(i, pos) == "output") pos = 0; else return "NO"; } } if (pos==0) return "YES"; else return "NO"; } } All of above fail, because of "Memory limit exceeded". Edited by author 16.03.2009 07:55 Re: (C# )Memory limit exceeded ,WHY? The first input size is greater than 16 mb. Re: (C# )Memory limit exceeded ,WHY? use bytes instead of chars and strings Re: (C# )Memory limit exceeded ,WHY? You got ML in the reading: Console.ReadLine() This line may use up to 20 MB of memory (strings are stored in Unicode). There is a solution with O(1) memory. Try to find it. |
|
|