Day 11: 2D Arrays

 

C++:

#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <string>
#include <math.h>
#include <vector>
#include <iostream>

using namespace std;


int main() {
    vector<vector<int>> arr(6);
    for (int i = 0; i < 6; i++) {
	arr[i].resize(6);
	for (int j = 0; j < 6; j++) {
		cin >> arr[i][j];
	}
	cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }

    int sum = 0;
    int Maximun = 0;

    //1
    for (int i = 0; i < 3; i++) {
	for (int j = 0; j < 3; j++) {
	    if (i != 1) {
	        sum += arr[i][j];
            }
	    else if (i == 1 && j == 1) {
	        sum += arr[i][j];
	    }
	}
    }
    Maximun = sum;
	
    sum = 0;
    //2
    for (int i = 0; i < 3; i++) {
	for (int j = 1; j < 4; j++) {
	    if (i != 1) {
		sum += arr[i][j];
	    }
	    else if (i == 1 && j == 2) {
		sum += arr[i][j];
	    }
	}
    }
    if (sum > Maximun) {
	Maximun = sum;
    }
    sum = 0;
    //3
    for (int i = 0; i < 3; i++) {
	for (int j = 2; j < 5; j++) {
	    if (i != 1) {
	        sum += arr[i][j];
	    }
	    else if (i == 1 && j == 3) {
		sum += arr[i][j];
	    }
	}
    }
    if (sum > Maximun) {
        Maximun = sum;
    }
    sum = 0;
    //4
    for (int i = 0; i < 3; i++) {
	for (int j = 3; j < 6; j++) {
	    if (i != 1) {
	        sum += arr[i][j];
	    }
	    else if (i == 1 && j == 4) {
	        sum += arr[i][j];
	    }
	}
    }
    if (sum > Maximun) {
	Maximun = sum;
    }
    sum = 0;

    //5
    for (int i = 1; i < 4; i++) {
	for (int j = 0; j < 3; j++) {
	    if (i != 2) {
		sum += arr[i][j];
	    }
	    else if (i == 2 && j == 1) {
	        sum += arr[i][j];
	    }
        }
    }
    if (sum > Maximun) {
	Maximun = sum;
    }
    sum = 0;
    //6
    for (int i = 1; i < 4; i++) {
        for (int j = 1; j < 4; j++) {
	    if (i != 2) {
		sum += arr[i][j];
	    }
	    else if (i == 2 && j == 2) {
		sum += arr[i][j];
	    }
	}
    }
    if (sum > Maximun) {
        Maximun = sum;
    }
    sum = 0;
    //7
    for (int i = 1; i < 4; i++) {
	for (int j = 2; j < 5; j++) {
	    if (i != 2) {
	        sum += arr[i][j];
	    }
	    else if (i == 2 && j == 3) {
		sum += arr[i][j];
	    }
	}
    }
    if (sum > Maximun) {
	Maximun = sum;
    }
    sum = 0;

    //8
    for (int i = 1; i < 4; i++) {
	for (int j = 3; j < 6; j++) {
	    if (i != 2) {
		sum += arr[i][j];
	    }
	    else if (i == 2 && j == 4) {
		sum += arr[i][j];
	    }
	}
    }
    if (sum > Maximun) {
	Maximun = sum;
    }
    sum = 0;

    //9
    for (int i = 2; i < 5; i++) {
	for (int j = 0; j < 3; j++) {
	    if (i != 3) {
	        sum += arr[i][j];
	    }
	    else if (i == 3 && j == 1) {
		sum += arr[i][j];
	    }
        }
    }
    if (sum > Maximun) {
	Maximun = sum;
    }
    sum = 0;
    //10
    for (int i = 2; i < 5; i++) {
	for (int j = 1; j < 4; j++) {
	    if (i != 3) {
		sum += arr[i][j];
	    }
	    else if (i == 3 && j == 2) {
		sum += arr[i][j];
	    }
	}
    }
    if (sum > Maximun) {
	Maximun = sum;
    }
    sum = 0;
    //11
    for (int i = 2; i < 5; i++) {
	 for (int j = 2; j < 5; j++) {
	    if (i != 3) {
		sum += arr[i][j];
	    }
	    else if (i == 3 && j == 3) {
	        sum += arr[i][j];
	    }
	}
    }
    if (sum > Maximun) {
	Maximun = sum;
    }
    sum = 0;
    //12
    for (int i = 2; i < 5; i++) {
	for (int j = 3; j < 6; j++) {
	    if (i != 3) {
		sum += arr[i][j];
	    }
	    else if (i == 3 && j == 4) {
	        sum += arr[i][j];
	    }
        }
    }    
    if (sum > Maximun) {
	Maximun = sum;
    }
    sum = 0;
    //13
    for (int i = 3; i < 6; i++) {
	for (int j = 0; j < 3; j++) {
	    if (i != 4) {
		sum += arr[i][j];
	    }
	    else if (i == 4 && j == 1) {
		sum += arr[i][j];
	    }
	}
    }
    if (sum > Maximun) {
	Maximun = sum;
    }
    sum = 0;
    //14
    for (int i = 3; i < 6; i++) {
	for (int j = 1; j < 4; j++) {
	    if (i != 4) {
		sum += arr[i][j];
	    }
	    else if (i == 4 && j == 2) {
		sum += arr[i][j];
	    }
	}
    }
    if (sum > Maximun) {
	Maximun = sum;
    }
    sum = 0;
    //15
    for (int i = 3; i < 6; i++) {
	for (int j = 2; j < 5; j++) {
	    if (i != 4) {
		sum += arr[i][j];
	    }
	    else if (i == 4 && j == 3) {
		sum += arr[i][j];
	    }
	}
    }
    if (sum > Maximun) {
	Maximun = sum;
    }
    sum = 0;
    //16
    for (int i = 3; i < 6; i++) {
	 for (int j = 3; j < 6; j++) {
	    if (i != 4) {
                sum += arr[i][j];
	    }
	    else if (i == 4 && j == 4) {
                sum += arr[i][j];
	    }
	}
    }
    if (sum > Maximun) {
	Maximun = sum;
    }

    cout << Maximun << endl;

    system("pause");
    return 0;
}

Python:

#!/bin/python3
import math
import os
import random
import re
import sys
# the first func is not very good!but for this problem, it's good!
def sum_hourglass1(hourglass):
    sum = 0
    for i in range(len(hourglass)):
        for j in range(len(hourglass)):
            if i != 1: sum = sum + hourglass[i][j]
            elif i == 1 and j == 1:
                sum = sum + hourglass[i][j]
    return sum

# the second func looks great! but not for this problem!
def sum_hourglass2(hourglass):
    sum = 0
    for i in hourglass:
        for j in i:
            sum += j
    return sum

if __name__ == '__main__':
    arr = []
    hourglasses = []
    hourglasses_tmp = []
    hourglasses_tmp_min = []
    for _ in range(6):
        arr.append(list(map(int, input().rstrip().split())))
        # print(arr)
        # first get all hourglasses
        # wast some time!may be not the best func.

    for mm in range(4):
        for ii in range(4):
            for jj in range(mm, mm+3):
                hourglasses_tmp_min=arr[jj][ii:ii+3]
                hourglasses_tmp.append(hourglasses_tmp_min)
                # print(hourglasses_tmp)
                hourglasses_tmp_min=[]
            hourglasses.append(hourglasses_tmp)
            hourglasses_tmp=[]
    # print(hourglasses)
    # second sum every hourglass from hourglasses
    # and append a list, and sort reverse=True, the first value=list[0] is you want.
    sum_hourglasses_list = []
    for hourglass in hourglasses:
        sum_hourglasses_list.append(sum_hourglass1(hourglass))
    sum_hourglasses_list.sort(reverse=True)
    print(sum_hourglasses_list[0])

总结:

先对6*6的矩形进行3*3的遍历,生成16个小矩形,对每个3*3的矩形中的值进行求和运算,其中要取3*3矩阵中第二行中的值。

 

Python:

对6*6的矩形进行3*3的遍历,生成16个小矩形:

for mm in range(4):                                     
    for ii in range(4):                                 
        for jj in range(mm, mm+3):                      
            hourglasses_tmp_min=arr[jj][ii:ii+3]        
            hourglasses_tmp.append(hourglasses_tmp_min) 
            # print(hourglasses_tmp)                    
            hourglasses_tmp_min=[]                      
        hourglasses.append(hourglasses_tmp)             
        hourglasses_tmp=[]                              

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值