Largest product in a grid( Project Euler 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?
http://projecteuler.net/problem=11
需要把矩阵分区,第0~19行&&第0~15列的求横向的,第0~15行&&第0~19列求纵向的,第0~15行&&第0~15列求斜向右下的,第0~15行&&第4~19列求斜向左下的。
#include<cstdio> #include<iostream> using namespace std; int n[20][20]; int main() { freopen("1.txt","r",stdin); for(int i=0; i<20; i++) for(int j=0; j<20; j++) cin>>n[i][j]; int max=1; for(int i=0; i<20; i++) for(int j=0; j<16; j++) if (n[i][j]*n[i][j+1]*n[i][j+2]*n[i][j+3]>max ) max=n[i][j]*n[i][j+1]*n[i][j+2]*n[i][j+3]; for(int i=0; i<16; i++) for(int j=0; j<20; j++) if(n[i][j]*n[i+1][j]*n[i+2][j]*n[i+3][j]>max) max=n[i][j]*n[i+1][j]*n[i+2][j]*n[i+3][j]; for(int i=0; i<16; i++) for(int j=0; j<16; j++) if(n[i][j]*n[i+1][j+1]*n[i+2][j+2]*n[i+3][j+3]>max) max=n[i][j]*n[i+1][j+1]*n[i+2][j+2]*n[i+3][j+3]; for(int i=0; i<16; i++) for(int j=4; j<20; j++) if (n[i][j]*n[i+1][j-1]*n[i+2][j-2]*n[i+3][j-3]>max) max=n[i][j]*n[i+1][j-1]*n[i+2][j-2]*n[i+3][j-3]; cout<<max<<endl; return 0; }
相关文章
- 如何用通俗地解释大数据
- 以“矩·变”为主题 神策2019数据驱动大会于北京举行
- 哪种编程语言最容易出bug?
- 适用于数据项目的7种强大的开源工具
- 使用DC/OS为企业数据科学加速!
- 商业项目中最受欢迎的7种编程语言
- 谷歌首席科学家:搞研究的痛苦,搞工程的人不懂
- 对PB级非结构化数据的要求
- 大数据和人工智能如何协同工作
- 大数据时代下如何打造“智慧交通”
- 一文详解被阿里腾讯视作核心机密的大数据平台架构
- 如何成为大数据领域的佼佼者?
- 这九项传统编程语言的招聘岗位需求仍然坚挺
- 机器学习与预测分析的区别在何处?
- 大盘点:8月Github上7个值得关注的数据科学项目
- 2019年六个不错的数据分析工具
- 如何为数据集选择正确的聚类算法
- 大数据世界中7种灾难性的网络安全错误
- Hadoop已死?Hadoop万岁!
- 企业选择数据湖架构的5大理由