| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 580 人关注过本帖
标题:一运行就出错的程序……【求指点具体错误或者算法……】
只看楼主 加入收藏
kirov_tujin
Rank: 2
等 级:论坛游民
帖 子:7
专家分:10
注 册:2013-3-16
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:2 
一运行就出错的程序……【求指点具体错误或者算法……】
恩啊,近期在做Euler Project,其中有一题是这样的:

Largest product in a grid


Problem 11
 

In the 2020 grid below, four numbers along a diagonal line have been marked in red.
 
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
 04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
 88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
 04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
 20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
 20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
 01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
 

The product of these numbers is 26 63 78 14 = 1788696.
 
What is the greatest product of four adjacent numbers in the same direction (up, down, left, right, or diagonally) in the 2020 grid?


于是我就用循环写了这么一个程序:
#include <iostream>

using namespace std;

int main()
{
    const int a[20][20]=
{
 { 8,  2, 22, 97, 38, 15,  0, 40,  0, 75,  4,  5,  7, 78, 52, 12, 50, 77, 91,  8},
 {49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48,  4, 56, 62,  0},
 {81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30,  3, 49, 13, 36, 65},
 {52, 70, 95, 23,  4, 60, 11, 42, 69, 24, 68, 56,  1, 32, 56, 71, 37,  2, 36, 91},
 {22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80},
 {24, 47, 32, 60, 99,  3, 45,  2, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50},
 {32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70},
 {67, 26, 20, 68,  2, 62, 12, 20, 95, 63, 94, 39, 63,  8, 40, 91, 66, 49, 94, 21},
 {24, 55, 58,  5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72},
 {21, 36, 23,  9, 75,  0, 76, 44, 20, 45, 35, 14,  0, 61, 33, 97, 34, 31, 33, 95},
 {78, 17, 53, 28, 22, 75, 31, 67, 15, 94,  3, 80,  4, 62, 16, 14,  9, 53, 56, 92},
 {16, 39,  5, 42, 96, 35, 31, 47, 55, 58, 88, 24,  0, 17, 54, 24, 36, 29, 85, 57},
 {86, 56,  0, 48, 35, 71, 89,  7,  5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58},
 {19, 80, 81, 68,  5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77,  4, 89, 55, 40},
 { 4, 52,  8, 83, 97, 35, 99, 16, 07, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66},
 {88, 36, 68, 87, 57, 62, 20, 72,  3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69},
 { 4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18,  8, 46, 29, 32, 40, 62, 76, 36},
 {20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74,  4, 36, 16},
 {20, 73, 35, 29, 78, 31, 90,  1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57,  5, 54},
 { 1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52,  1, 89, 19, 67, 48}};


    const int N = 20;

    int i, j;
    long int curr,
             maxi[5] = { 0, 0, 0, 0, 0};

    curr = 0;

    for(i = 0;i < N;i ++)
    {
        for(j = 0;j < N-4;j ++)
        {
            curr = a[i][j+0]
                  *a[i][j+1]
                  *a[i][j+2]
                  *a[i][j+3];
            maxi[1] = curr>maxi[1]?curr:maxi[1];
        }
    }
    cout << "Hello world!" << endl << "maxi[1] " << maxi[1] << endl;

    for(j = 0;j < N;i ++)
    {
        for(i = 0;i < N-4;j ++)
        {
            curr = a[i+0][j]
                  *a[i+1][j]
                  *a[i+2][j]
                  *a[i+3][j];
            maxi[2] = curr>maxi[2]?curr:maxi[2];
        }
    }
    cout << "Hello world!" << endl << "maxi[2] " << maxi[2] << endl;

    for(i = 0;i < N-4;i ++)
    {
        for(j = 0;j < N-4;j ++)
        {
            curr = a[i+0][j+0]
                  *a[i+1][j+1]
                  *a[i+2][j+2]
                  *a[i+3][j+3];
            maxi[3] = curr>maxi[3]?curr:maxi[3];
        }
    }
    cout << "Hello world!" << endl << "maxi[3] " << maxi[3] << endl;

    for(i = 0;i < N-4;i ++)
    {
        for(j = 0;j < N-4;j ++)
        {
            curr = a[i+3][j+0]
                  *a[i+2][j+1]
                  *a[i+1][j+2]
                  *a[i+0][j+3];
            maxi[4] = curr>maxi[4]?curr:maxi[4];
        }
    }
    cout << "Hello world!" << endl << "maxi[4] " << maxi[4] << endl;


    return 0;
}

最初maxi不是一个数组,一运行显示第一个maxi之后就报错,所以改成数组;但是还是一输出maxi[1]就出错……
求指点……
搜索更多相关主题的帖子: product numbers 
2013-03-16 20:54
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:20 
#include <iostream>
 
using namespace std;
 
int main()
 {
     const int a[20][20]=
 {
 { 8,  2, 22, 97, 38, 15,  0, 40,  0, 75,  4,  5,  7, 78, 52, 12, 50, 77, 91,  8},
 {49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48,  4, 56, 62,  0},
 {81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30,  3, 49, 13, 36, 65},
 {52, 70, 95, 23,  4, 60, 11, 42, 69, 24, 68, 56,  1, 32, 56, 71, 37,  2, 36, 91},
 {22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80},
 {24, 47, 32, 60, 99,  3, 45,  2, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50},
 {32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70},
 {67, 26, 20, 68,  2, 62, 12, 20, 95, 63, 94, 39, 63,  8, 40, 91, 66, 49, 94, 21},
 {24, 55, 58,  5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72},
 {21, 36, 23,  9, 75,  0, 76, 44, 20, 45, 35, 14,  0, 61, 33, 97, 34, 31, 33, 95},
 {78, 17, 53, 28, 22, 75, 31, 67, 15, 94,  3, 80,  4, 62, 16, 14,  9, 53, 56, 92},
 {16, 39,  5, 42, 96, 35, 31, 47, 55, 58, 88, 24,  0, 17, 54, 24, 36, 29, 85, 57},
 {86, 56,  0, 48, 35, 71, 89,  7,  5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58},
 {19, 80, 81, 68,  5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77,  4, 89, 55, 40},
 { 4, 52,  8, 83, 97, 35, 99, 16, 07, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66},
 {88, 36, 68, 87, 57, 62, 20, 72,  3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69},
 { 4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18,  8, 46, 29, 32, 40, 62, 76, 36},
 {20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74,  4, 36, 16},
 {20, 73, 35, 29, 78, 31, 90,  1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57,  5, 54},
 { 1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52,  1, 89, 19, 67, 48}};
 

    const int N = 20;
 
    int i, j;
     long int curr,
              maxi[5] = { 0, 0, 0, 0, 0};
 
    curr = 0;
 
    for(i = 0;i < N;i ++)
     {
         for(j = 0;j < N-4;j ++)
         {
             curr = a[i][j+0]
                   *a[i][j+1]
                   *a[i][j+2]
                   *a[i][j+3];
             maxi[1] = curr>maxi[1]?curr:maxi[1];
         }
     }
     cout << "Hello world!" << endl << "maxi[1] " << maxi[1] << endl;
 
    for(j = 0;j < N;i ++) // j = 0 i++?
     {
         for(i = 0;i < N-4;j ++) // i = 0 j++?
         {
             curr = a[i+0][j]
                   *a[i+1][j]
                   *a[i+2][j]
                   *a[i+3][j];
             maxi[2] = curr>maxi[2]?curr:maxi[2];
         }
     }
     cout << "Hello world!" << endl << "maxi[2] " << maxi[2] << endl;
 
    for(i = 0;i < N-4;i ++)
     {
         for(j = 0;j < N-4;j ++)
         {
             curr = a[i+0][j+0]
                   *a[i+1][j+1]
                   *a[i+2][j+2]
                   *a[i+3][j+3];
             maxi[3] = curr>maxi[3]?curr:maxi[3];
         }
     }
     cout << "Hello world!" << endl << "maxi[3] " << maxi[3] << endl;
 
    for(i = 0;i < N-4;i ++)
     {
         for(j = 0;j < N-4;j ++)
         {
             curr = a[i+3][j+0]
                   *a[i+2][j+1]
                   *a[i+1][j+2]
                   *a[i+0][j+3];
             maxi[4] = curr>maxi[4]?curr:maxi[4];
         }
     }
     cout << "Hello world!" << endl << "maxi[4] " << maxi[4] << endl;
 

    return 0;
 }
收到的鲜花
  • kirov_tujin2013-03-16 21:13 送鲜花  2朵   附言:我很赞同

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-03-16 21:03
kirov_tujin
Rank: 2
等 级:论坛游民
帖 子:7
专家分:10
注 册:2013-3-16
收藏
得分:0 
回复 2楼 yuccn
谢谢!!终于运行出来了!!答案对了!!
2013-03-16 21:12
快速回复:一运行就出错的程序……【求指点具体错误或者算法……】
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025815 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved