小华最多能得到多少克黄金、小华地图寻宝
暂时只想到暴力解 如果你有更好的思路 请告诉我 感激不尽
题目描述
小华按照地图去寻宝,地图上被划分成 m 行和 n 列的方格,横纵坐标范围分别是 [0, n-1] 和 [0, m-1]。
在横坐标和纵坐标的数位之和不大于 k 的方格中存在黄金(每个方格中仅存在一克黄金),但横坐标和纵坐标之和大于 k 的方格存在危险不可进入。小华从入口 (0,0) 进入,任何时候只能向左,右,上,下四个方向移动一格。
请问小华最多能获得多少克黄金?
输入描述
坐标取值范围如下:
- 0 ≤ m ≤ 50
- 0 ≤ n ≤ 50
k 的取值范围如下:
- 0 ≤ k ≤ 100
输入中包含3个字数,分别是m, n, k
输出描述
输出小华最多能获得多少克黄金
用例1
输入
40 40 18
输出
1484
用例2
输入
5 4 7
输出
20
代码(暴力解)
#include <iostream>
#include <vector>
using namespace std;
// 计算数位之和
int digitSum(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
// 判断坐标是否合法
bool isValid(int x, int y, int m, int n, int k) {
return x >= 0 && x < m && y >= 0 && y < n && digitSum(x) + digitSum(y) <= k;
}
int count(int m, int n, int k)
{
int result = 0;
for(int i= 0; i<m; i++)
{
for(int j = 0; j<n; j++)
{
if(isValid(i,j,m,n,k)) result++;
}
}
return result;
}
int main() {
int m, n, k;
cin >> m >> n >> k;
cout << count(m, n, k) << endl;
return 0;
}