我正在尝试解决projecteuler.net上的问题,但我一直遇到一些问题.
第一个是存储大量元素的问题List
.在列表中存储大量数据时,我一直收到OutOfMemoryException.
现在我承认我可能没有以最好的方式做这些事情但是,有没有办法定义应用程序可以消耗多少内存?
当我满足100,000,000个元素时,它通常会崩溃:S
其次,一些问题需要增加大量数字.我使用ulong数据类型,我认为这个数字会变得非常大,但我仍然设法绕过最大的受支持的int并进入负数.
你有任何使用难以置信的大数字的技巧吗?
您需要使用大量使用一些基本数学原理的类来分割这些操作.这是C#的BigInteger库的实现上CodePoject似乎是最有前途的.这篇文章对大量数字的操作也有一些很好的解释.
另见: C#中的大整数
考虑System.Numerics.BigInteger.
就Euler项目而言,如果你遇到OutOfMemory异常,你可能会咆哮错误的树.从他们的网站:
每个问题都是根据"一分钟规则"设计的,这意味着虽然设计一个成功的算法可能需要几个小时才能解决更多难题,但是有效的实施将允许在一个适度的计算机上获得解决方案.不到一分钟.