[英]I am trying to read information from a .csv and put it into an array in C#. Can anyone tell me why the code doesn't work?
[英]Can anyone tell me why this doesn't work to solve Problem 8 of Project Euler?
我正在嘗試解決 Project Euler Problem 8 。 我對 C# 還是很陌生,所以我喜歡使用簡單的任務和函數,這就是代碼很長的原因。 如果我嘗試找到給出最高產品的四個相鄰數字它可以工作,但是當我嘗試找到 13 它不起作用。 字符串 lO 是長數字。 lO 表示長一號,sO 表示短一號。
//Problem 8
string lO =
string sO = "";
int length = lO.Length;
int uno = 0;
int dos = 0;
int tre = 0;
int fou = 0;
int fiv = 0;
int six = 0;
int sev = 0;
int eig = 0;
int nin = 0;
int ten = 0;
int ele = 0;
int twe = 0;
int thi = 0;
long big = 0;
long total = 0;
int sub = 0;
for (int i = 0; i < length; i++)
{
sub = length - i;
if (sub > 13)
{
sO = lO.Substring(i, 13);
}
else
{
sO = lO.Substring(i, sub);
}
if (sO.Length >= 13)
{
uno = Convert.ToInt32(sO.Substring(0, 1));
dos = Convert.ToInt32(sO.Substring(1, 1));
tre = Convert.ToInt32(sO.Substring(2, 1));
fou = Convert.ToInt32(sO.Substring(3, 1));
fiv = Convert.ToInt32(sO.Substring(4, 1));
six = Convert.ToInt32(sO.Substring(5, 1));
sev = Convert.ToInt32(sO.Substring(6, 1));
eig = Convert.ToInt32(sO.Substring(7, 1));
nin = Convert.ToInt32(sO.Substring(8, 1));
ten = Convert.ToInt32(sO.Substring(9, 1));
ele = Convert.ToInt32(sO.Substring(10, 1));
twe = Convert.ToInt32(sO.Substring(11, 1));
thi = Convert.ToInt32(sO.Substring(12));
}
total = uno * dos * tre * fou * fiv * six * sev * eig * nin * ten * ele * twe * thi;
//Console.WriteLine("Total: " + total);
if (total > big)
{
big = total;
Console.WriteLine("New biggest is " + big);
}
}
您的代碼的問題是這一行
total = uno * dos * tre * fou * fiv * six * sev * eig * nin * ten * ele * twe * thi;
由於所有這些變量都是int
類型,因此將它們相乘會導致 integer 溢出並且您不會得到正確的結果。
用這個:
total = (long)uno * (long)dos * (long)tre * (long)fou * (long)fiv * (long)six * (long)sev * (long)eig * (long)nin * (long)ten * (long)ele * (long)twe * (long)thi;
或者首先聲明它們。
注意:在歐拉上測試,結果是正確的。
我有幾個建議:
int[] selected = new int[13];
ToCharArray()
將其轉換為字符數組。 這將顯着減少程序的長度。string lo = new string();
和string so = new string();
完成這些更改后,您可以簡單地使用嵌套的 for 循環來解決上述程序。PS如果您需要詳細的解決方案,請輸入對此答案的評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.