首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >欧拉项目11

欧拉项目11
EN

Stack Overflow用户
提问于 2012-06-11 05:56:37
回答 1查看 305关注 0票数 3

我正在忙于Project Euler,我正在尝试解决problem 11,但答案似乎是错误的。但我不明白为什么,代码似乎是正确的。

代码语言:javascript
复制
vector<vector<int> > grid;
    ifstream stream("/home/uauser/workspace/Project_euler/grid.txt");
    string line;
    char *tok;
    if (stream.is_open())
    {
        while(stream.good())
        {
            getline(stream, line);
            tok = strtok((char *)line.c_str(), " ");
            vector<int> row;
            while (tok != NULL)
            {
                int field;
                stringstream ss;
                ss << tok;
                ss >> field;
                row.push_back(field);

                tok = strtok(NULL, " ");
            }
            grid.push_back(row);
        }
        stream.close();
    }

    int product = 0;
    for(unsigned int i = 0; i < grid.size(); i++)
    {
        for(unsigned int j = 0; j < grid.at(i).size(); j++)
        {
            if( i < 17)
            {
                product = max(product, grid.at(i).at(j) * grid.at(i + 1).at(j) * grid.at(i + 2).at(j) * grid.at(i + 3).at(j));
            }
            if( j < 17)
            {
                product = max(product, grid.at(i).at(j) * grid.at(i).at(j+1)* grid.at(i).at(j+2) * grid.at(i).at(j + 3));
            }
            if((j < 17) && (i < 17) && (j >= 3) && (i >= 3))
            {
                product = max(product, grid.at(i).at(j) * grid.at(i-1).at(j+1) * grid.at(i-1).at(j+2) * grid.at(i -3).at(j+3));
                product = max(product, grid.at(i).at(j) * grid.at(i+1).at(j-1) * grid.at(i+1).at(j-2) * grid.at(i +3).at(j-3));
                product = max(product, grid.at(i).at(j) * grid.at(i+1).at(j+1) * grid.at(i+1).at(j+2) * grid.at(i + 3).at(j + 3));
                product = max(product, grid.at(i).at(j) * grid.at(i-1).at(j-1) * grid.at(i-1).at(j-2) * grid.at(i -3).at(j-3));
            }
            cout<<product<<endl;

        }
    }
    cout<<"The Product is: "<<product<<endl;
}

sow读取的代码是txt文件,没有问题,但是当他需要找到最大值时却只得到了错误的答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-11 06:03:35

对角线的索引是错误的。例如:

代码语言:javascript
复制
... * grid.at(i-1).at(j+1) * grid.at(i-1).at(j+2) * grid.at(i -3).at(j+3))

中间部分应该是i-2而不是i-1。其他对角线也有类似的问题。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10972654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档