Note that there are some explanatory texts on larger screens.

plurals
  1. POTriangle problem
    primarykey
    data
    text
    <p>I am trying to resolve Euler Problem 18 -> <a href="http://projecteuler.net/index.php?section=problems&amp;id=18" rel="nofollow noreferrer">http://projecteuler.net/index.php?section=problems&amp;id=18</a></p> <p>I am trying to do this with c++ (I am relearning it and euler problems make for good learning/searching material)</p> <pre><code>#include &lt;iostream&gt; using namespace std; long long unsigned countNums(short,short,short array[][15],short,bool,bool); int main(int argc,char **argv) { long long unsigned max = 0; long long unsigned sum; short piramide[][15] = {{75,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {95,64,0,0,0,0,0,0,0,0,0,0,0,0,0}, {17,47,82,0,0,0,0,0,0,0,0,0,0,0,0}, {18,35,87,10,0,0,0,0,0,0,0,0,0,0,0}, {20,4,82,47,65,0,0,0,0,0,0,0,0,0,0}, {19,1,23,75,3,34,0,0,0,0,0,0,0,0,0}, {88,2,77,73,7,63,67,0,0,0,0,0,0,0,0}, {99,65,4 ,28,6,16,70,92,0,0,0,0,0,0,0}, {41,41,26,56,83,40,80,70,33,0,0,0,0,0,0}, {41,48,72,33,47,32,37,16,94,29,0,0,0,0,0}, {53,71,44,65,25,43,91,52,97,51,14,0,0,0,0}, {70,11,33,28,77,73,17,78,39,68,17,57,0,0,0}, {91,71,52,38,17,14,91,43,58,50,27,29,48,0,0}, {63,66,4,68,89,53,67,30,73,16,69,87,40,31,0}, {4,62,98,27,23,9,70,98,73,93,38,53,60,4,23}}; for (short i = 0;i&lt;15;i++) { for (short m=0;m&lt;15;m++) { if (piramide[i][m] == 0) break; sum = countNums(i,m,piramide,15,true,true); if (sum &gt; max) max = sum; sum = countNums(i,m,piramide,15,true,false); if (sum &gt; max) max = sum; sum = countNums(i,m,piramide,15,false,true); if (sum &gt; max) max = sum; sum = countNums(i,m,piramide,15,false,false); if (sum &gt; max) max = sum; } } cout &lt;&lt; max; return 0; } long long unsigned countNums(short start_x,short start_y,short array[][15],short size, bool goright,bool goright2) { long long unsigned currentSum; currentSum = array[start_x][start_y]; if (goright) { //go right if ((start_x + 1) &lt; size) start_x++; if ((start_y + 1) &lt; size) start_y++; } else //go down if ((start_x + 1) &lt; size) start_x++; if (goright2) { //still going right for (short i = start_x, m = start_y;i&lt; size &amp;&amp; m &lt; size;i++,m++) { currentSum += array[i][m]; } } else { //still going down for (short i = start_x;i&lt;size;i++) { currentSum += array[i][start_y]; } } return currentSum; } </code></pre> <p>The countNums function is used to go either down or diagonally. I have tested this function like so:</p> <pre><code>short a = 0; short b = 0; cout &lt;&lt; countNums(a,b,piramide,15,true,true) &lt;&lt; endl; cout &lt;&lt; countNums(a,b,piramide,15,true,false) &lt;&lt; endl; cout &lt;&lt; countNums(a,b,piramide,15,false,true) &lt;&lt; endl; cout &lt;&lt; countNums(a,b,piramide,15,false,false) &lt;&lt; endl; return 0; </code></pre> <p>And it does work (I also changed the function a little so it would print every number it was going through) </p> <p>But I still don't get the right result. This goes down and to the right and still goes right (adjacent numbers to the right), goes down and keeps going down (adjacent number to the left). What am I doing wrong here, anyone?</p> <hr> <p>Alastair: It's simple</p> <p>long long unsigned countNums(short start_x,short start_y,short array[][15],short size, bool goright,bool goright2);</p> <p>start_x and start_y are the coords of the array array is the reference to the array size is just the size of the array (it's always 15) goright is to know if I am going to go down and right or just down goright2 is to know if I am going to continue to go down or going left</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload