kim_checkking
Kim is trekking in the Jeju islands. He wants to get to his destination with the lowest amount of energy used. However, he does not want to spend more time to save energy. Fortunately Kim has a map. Map is NxN with values equal to the land height. He cannot move diagonally. It takes the same time to move one cell, independent of height. If he moves the same height or smaller than the current, energy of 1 is used. When moving to a position with height greater than the current position, energy of (height difference + 1) is used. Starting point (1,1) & destination (N,N) are fixed. Among several paths moving within the minimum time, find the path which uses the least energy. Write a solution which prints energy for that path. Constraints: 4<=N<= 12 0<=Height<=9 Cannot move diagonally Example input 4 9 5 7 9 8 4 2 5 7 6 5 4 8 8 9 5 output 7 3 sample examples provided //===================== #include <iostream> using namespace std; int arr[15][15]; int vis[15][15]; int n, ans; int dx[2] = {0, 1}; int dy[2] = {1, 0}; void dfs(int x, int y, int cst) { if(x == n - 1 && y == n - 1) { if(cst < ans) ans = cst; } vis[x][y]=1; for(int k = 0; k < 2; k++) { int cx = x + dx[k]; int cy = y + dy[k]; int newcst; if(cx >= 0 && cx < n && cy >= 0 && cy < n && vis[cx][cy] == 0) { if(arr[cx][cy] > arr[x][y]) newcst = cst + (arr[cx][cy] - arr[x][y]) + 1; else newcst = cst + 1; dfs(cx, cy, newcst); } } vis[x][y]=0; } int main() { freopen("input.txt", "r", stdin); int test; cin >> test; for(int t = 1;t <= test; t++) { cin >> n; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { vis[i][j] = 0; cin >> arr[i][j]; } } ans = 9999; dfs(0, 0, 0); cout << "#" << t << " " << ans << endl; } return 0; } =========================================== #include<iostream> using namespace std; int arr[13][13], n, vis[13][13], minEne; void reset() { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { vis[i][j] = 0; } } } bool isSafe(int x, int y) { if (x >= 0 && x < n && y >= 0 && y < n) return true; return false; } void dfs(int i, int j , int ene) { if (ene > minEne) { return; } if (i == n - 1 && j == n - 1) { if (ene < minEne) { minEne = ene; return; } } vis[i][j] = 1; if (isSafe(i + 1, j) && vis[i + 1][j] == 0) { if (arr[i + 1][j] <= arr[i][j]) dfs(i + 1, j, ene + 1); else dfs(i + 1, j, ene + arr[i + 1][j] - arr[i][j] + 1); } if (isSafe(i, j + 1) && vis[i][j + 1] == 0) { if (arr[i][j+1] <= arr[i][j]) dfs(i, j+1, ene + 1); else dfs(i, j+1, ene + arr[i][j+1] - arr[i][j] + 1); } vis[i][j] = 0; } int main() { freopen("input.txt", "r", stdin); int t; cin >> t; for (int tc = 1; tc <= t; tc++) { cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> arr[i][j]; } } reset(); vis[0][0] = 0; minEne = 99999; dfs(0, 0, 0); cout <<"#"<<tc<<" "<< minEne<<endl; } return 0; } //============================== 50 4 9 5 7 9 8 4 2 5 7 6 5 4 8 8 9 5 6 3 2 6 0 1 2 9 2 2 9 2 9 4 9 2 2 0 1 0 2 4 2 2 4 4 5 0 1 2 2 9 8 1 7 5 1 8 1 1 1 1 1 1 1 1 9 9 9 9 9 9 9 1 9 9 9 9 9 9 9 1 9 9 9 9 1 1 1 1 9 9 9 9 1 9 9 9 9 9 9 9 1 9 9 9 9 9 9 9 1 9 9 9 9 9 9 9 1 1 1 1 4 9 8 2 9 2 4 5 8 9 2 9 0 1 0 5 2 11 8 2 6 5 1 5 3 6 7 4 4 6 3 7 6 5 8 6 4 5 4 8 6 5 5 5 5 3 9 7 5 3 3 3 4 5 8 9 9 5 8 9 0 1 7 6 7 2 0 6 9 4 8 5 9 3 4 5 1 1 1 1 9 1 7 3 7 5 0 7 6 8 6 5 9 5 5 2 6 6 4 3 0 9 6 4 5 0 1 9 8 5 6 8 1 2 7 8 6 2 7 6 1 3 9 1 7 9 3 7 2 8 4 7 3 3 4 2 3 4 0 8 9 4 3 1 9 6 5 5 4 5 4 6 7 5 4 8 4 1 7 7 2 0 5 3 3 2 3 4 1 4 1 6 0 1 5 2 8 1 9 8 4 5 4 8 3 8 3 5 8 8 0 2 9 8 4 2 1 7 4 7 8 8 5 0 7 8 0 8 2 9 6 9 6 5 7 5 0 4 8 3 1 6 1 2 6 0 1 9 5 7 0 1 8 9 4 0 2 9 1 2 8 2 4 3 9 6 7 4 7 7 0 9 5 2 4 9 0 1 9 8 4 7 5 1 4 6 6 0 7 5 2 10 0 3 3 6 8 4 2 8 3 9 2 9 6 1 9 7 9 3 6 1 5 2 3 2 2 3 1 6 2 8 6 3 7 0 3 6 7 8 0 1 6 6 4 7 2 7 0 8 1 9 6 0 2 9 1 6 3 9 0 8 6 5 6 6 9 5 6 2 3 3 7 3 8 5 8 4 3 9 9 0 9 8 8 4 6 2 0 8 8 3 2 5 5 7 4 1 9 2 2 6 8 9 0 5 6 4 9 8 4 2 6 7 9 1 6 3 5 8 1 5 8 7 7 2 2 4 5 9 2 5 6 4 9 4 6 4 8 9 0 2 2 9 4 3 1 7 3 1 2 2 4 7 4 1 6 5 3 9 7 1 1 6 6 0 4 12 3 1 9 3 1 2 7 9 9 4 8 4 1 5 3 4 1 5 1 2 9 2 4 3 0 1 9 8 0 5 0 2 3 7 7 3 8 4 2 8 0 8 2 3 0 9 7 5 7 8 2 3 2 3 2 9 9 0 3 3 4 9 3 6 4 2 5 9 4 7 5 3 8 9 2 8 1 9 0 3 9 6 2 8 6 8 7 2 3 7 4 7 9 8 7 8 2 4 1 0 7 1 3 6 3 6 7 3 1 5 4 3 3 8 2 0 4 4 0 9 3 4 2 4 0 1 0 0 3 4 8 6 9 8 0 3 4 7 6 0 8 2 1 5 9 1 7 7 8 3 4 3 3 0 2 8 3 8 0 5 0 3 9 1 9 4 7 9 9 6 7 4 4 5 1 3 6 9 0 2 8 4 1 0 5 0 6 0 9 3 3 0 1 4 5 6 6 9 2 5 7 8 0 1 4 3 0 8 3 7 9 1 3 1 5 5 6 1 1 6 2 7 1 6 7 8 5 3 2 8 7 1 7 8 4 7 6 6 0 2 0 2 5 3 5 6 0 7 3 7 6 4 11 8 0 0 1 1 2 9 3 8 4 4 9 5 0 0 5 7 7 6 2 9 8 9 8 2 2 6 3 3 8 2 6 0 8 7 1 6 9 5 8 7 7 9 5 9 5 4 9 7 6 0 0 8 9 3 1 1 3 7 0 6 1 2 6 4 2 2 6 0 9 6 5 1 2 7 8 4 8 0 0 4 9 6 6 7 0 7 9 7 1 0 2 2 8 1 9 8 8 7 4 1 3 1 8 0 3 9 9 4 1 1 9 6 5 9 0 0 8 8 2 0 5 1 8 8 6 7 8 4 5 3 5 6 8 8 6 8 0 0 4 4 6 3 7 4 8 9 5 8 0 6 6 0 4 6 0 9 6 2 0 7 3 3 3 0 5 8 4 6 4 2 0 2 10 5 8 6 0 7 0 7 7 5 3 4 8 5 9 4 5 4 4 3 3 5 6 5 4 5 4 8 7 8 1 7 2 8 6 4 2 1 3 1 4 3 4 3 3 1 0 3 4 5 1 4 3 0 0 2 0 9 0 0 2 7 6 9 1 0 8 6 6 4 9 9 2 6 2 3 7 2 1 2 8 8 3 9 8 2 6 2 9 0 5 1 3 8 8 3 5 0 6 6 2 6 4 6 0 6 9 6 5 7 9 8 6 5 0 5 3 5 3 5 0 9 5 9 2 8 3 0 7 5 9 5 8 2 5 5 9 7 11 2 7 5 2 8 1 4 8 5 2 2 6 2 5 2 1 2 0 1 1 2 6 3 3 5 5 8 9 5 4 0 1 3 2 5 1 9 0 3 3 2 6 6 9 4 9 6 7 5 7 8 5 4 7 6 8 6 0 2 2 0 6 9 8 2 0 8 1 8 0 6 7 1 2 3 8 1 7 2 3 9 2 8 4 1 2 6 3 3 5 5 6 9 0 8 2 4 4 8 4 5 0 9 6 5 4 5 2 0 2 7 4 3 4 4 2 6 5 3 4 9 8 0 2 7 4 2 5 4 0 0 4 5 1 8 3 5 6 6 9 8 8 6 7 5 3 7 8 9 9 8 6 8 7 6 7 8 9 8 9 8 2 1 0 1 5 6 8 7 1 1 2 7 3 9 4 0 7 9 9 7 5 7 2 3 6 12 9 8 7 8 9 8 2 6 1 7 5 7 1 1 4 7 0 6 4 7 7 3 4 9 1 9 8 6 5 3 2 6 7 8 9 1 8 0 2 4 5 2 7 1 5 9 5 8 7 4 8 8 9 2 6 8 8 1 1 3 0 7 2 3 5 4 5 9 8 5 2 4 5 7 0 5 8 3 2 0 2 2 9 8 4 4 9 5 1 6 9 1 4 5 0 8 2 8 8 6 9 4 4 6 5 6 0 3 2 0 1 1 9 1 9 3 8 4 5 5 7 7 7 2 1 5 1 7 1 0 4 3 0 0 4 3 0 6 2 4 8 0 7 0 12 9 5 0 6 9 6 0 6 0 3 5 3 5 8 7 2 9 7 6 5 7 0 0 5 8 1 6 9 3 0 6 8 6 0 5 9 1 4 1 5 2 1 7 2 8 7 8 8 0 0 5 0 5 4 7 0 6 4 5 6 0 1 1 9 3 1 8 5 6 6 9 0 8 2 3 8 8 5 8 1 6 9 2 2 2 5 4 0 7 2 3 0 1 8 1 1 1 0 3 4 6 4 5 4 8 2 2 7 5 0 3 9 9 2 1 4 6 9 6 7 4 2 1 7 3 2 3 0 9 2 4 3 6 5 2 6 3 4 4 5 0 6 1 2 10 9 0 2 4 9 1 1 1 1 7 5 6 5 3 5 5 5 6 5 1 9 5 4 6 6 0 9 1 9 9 6 4 2 3 4 5 1 4 9 3 6 0 2 6 5 4 0 4 2 1 5 0 7 9 6 7 3 2 9 8 1 1 3 8 2 5 7 2 4 8 4 1 4 2 4 2 4 7 5 1 3 7 2 1 3 2 3 7 9 0 1 9 6 6 2 4 7 8 4 3 12 3 9 3 6 5 4 0 2 8 9 6 5 0 5 7 1 3 0 1 3 6 6 3 6 7 2 6 3 4 1 4 4 0 8 0 5 0 2 4 7 4 1 4 7 2 8 5 8 1 7 8 8 1 1 7 9 7 2 8 3 7 8 3 7 9 5 1 1 9 6 6 3 8 8 0 4 7 3 5 6 6 1 9 9 5 8 0 7 1 8 4 0 2 4 7 5 2 9 1 3 6 5 2 4 9 2 3 9 1 4 1 8 3 6 2 1 2 1 8 4 1 8 1 1 9 5 9 6 3 9 1 9 9 2 5 6 4 3 5 1 9 1 1 4 11 9 1 3 6 6 2 2 0 0 6 0 6 3 8 0 8 8 9 4 4 7 0 1 8 0 1 9 1 0 5 0 9 3 7 8 3 8 9 7 1 5 9 0 5 1 4 5 2 4 3 6 5 2 0 1 8 6 0 2 5 5 2 2 4 6 3 7 2 8 5 5 3 0 9 4 0 4 3 5 5 9 8 2 8 6 5 3 0 0 2 7 2 1 0 2 5 3 2 1 9 2 0 8 3 2 8 5 6 0 5 0 8 6 1 9 2 9 1 1 1 8 5 5 5 8 0 7 3 4 4 9 1 4 7 1 9 4 5 1 2 7 1 9 8 3 5 0 11 1 6 8 2 0 1 5 0 2 8 9 2 5 2 4 5 3 5 6 6 0 7 4 6 3 7 9 2 3 1 3 5 9 0 6 9 5 3 1 2 4 0 3 3 0 1 4 4 3 5 8 6 2 3 5 9 9 9 4 1 1 9 4 7 6 7 0 5 6 1 4 1 3 3 5 5 1 1 4 5 8 2 6 3 4 0 3 8 6 2 7 7 7 9 8 6 6 3 8 8 9 2 0 0 7 1 1 5 2 1 6 8 8 7 0 3 1 6 1 9 4 8 5 1 4 6 0 8 1 9 2 8 2 2 0 9 8 2 2 8 2 0 9 8 3 5 7 6 8 7 8 3 1 5 6 6 8 6 2 6 0 9 8 4 6 8 8 9 2 2 0 8 4 1 5 1 3 8 2 1 4 4 5 5 2 0 7 1 2 7 2 0 9 9 1 7 4 1 7 1 2 4 0 4 4 8 3 9 8 4 3 0 3 4 3 3 6 1 2 5 1 5 7 8 5 4 2 1 4 7 8 1 9 4 5 1 7 8 4 8 4 0 4 6 3 2 4 7 1 4 7 8 1 1 4 9 5 2 3 4 5 7 2 1 7 0 3 2 4 4 1 2 9 6 5 0 3 5 8 5 1 6 6 5 8 0 5 9 2 7 2 0 6 0 7 6 4 1 7 8 6 6 9 8 9 5 4 6 0 9 2 5 4 1 5 5 9 7 9 3 5 8 0 8 9 0 3 1 3 7 0 3 4 7 1 2 0 1 9 3 5 5 0 2 3 1 6 7 9 2 0 4 7 5 4 1 6 0 1 0 8 2 8 0 5 5 2 4 9 2 8 8 8 4 9 0 7 2 5 11 6 2 7 7 5 6 6 7 8 7 2 4 7 7 5 0 2 9 5 0 6 7 8 8 3 4 1 5 6 2 6 6 9 4 9 1 2 2 2 8 2 0 2 6 6 4 7 2 3 6 1 1 9 4 8 0 5 8 1 9 4 2 9 8 4 2 2 4 5 5 4 6 0 9 7 0 1 7 6 9 8 2 5 7 3 3 2 5 9 1 7 1 8 5 2 9 8 7 7 1 8 3 3 4 1 9 0 5 8 7 1 2 3 3 6 0 1 2 3 4 7 7 8 5 6 3 9 4 6 4 9 8 8 1 3 1 2 1 2 1 0 4 7 0 4 0 1 0 5 3 5 1 7 5 1 8 6 8 8 8 0 7 7 1 9 7 3 7 7 9 8 7 5 8 4 9 5 1 5 5 5 1 9 1 6 8 5 9 8 2 9 4 5 7 2 2 3 3 9 6 2 4 2 4 5 9 7 7 9 2 8 3 6 1 5 5 9 4 5 7 2 11 7 5 3 7 7 6 7 3 4 9 2 1 5 1 6 8 7 2 4 8 3 0 8 9 2 8 5 8 0 7 4 0 4 3 2 7 9 1 8 4 4 8 2 8 7 4 7 5 6 7 1 0 1 9 5 5 2 6 8 7 3 5 6 8 3 5 7 8 3 8 2 6 1 6 8 6 3 8 5 2 1 8 5 4 9 2 2 7 1 8 0 9 9 6 0 3 2 4 7 7 0 6 5 1 7 4 9 2 1 3 2 2 6 8 0 7 5 1 4 5 9 9 4 7 7 4 8 9 4 4 9 9 1 6 0 4 6 4 9 0 2 3 9 1 5 0 7 6 6 3 1 8 8 8 1 2 1 1 6 6 1 0 7 2 5 3 7 7 0 1 8 5 7 2 8 7 4 9 2 1 8 4 7 0 6 6 9 8 1 5 2 4 9 7 3 7 2 3 6 8 1 8 8 8 9 2 5 3 1 0 2 5 8 3 1 7 7 3 4 6 2 7 9 4 0 6 2 7 5 5 8 8 3 2 1 8 7 8 7 3 0 4 6 5 7 5 3 6 5 5 4 1 8 3 1 8 5 6 7 8 0 3 6 9 0 4 1 5 7 6 6 3 0 9 2 8 4 8 4 9 6 9 3 9 3 8 6 4 1 2 3 3 8 1 4 7 6 9 8 2 7 0 1 2 4 6 4 9 6 6 6 5 0 1 1 1 3 7 6 1 7 9 8 2 3 4 8 9 3 6 2 2 3 2 2 8 7 8 1 6 4 4 9 0 4 1 5 4 3 3 3 9 4 1 8 8 8 0 1 7 4 5 5 1 7 2 9 9 8 7 4 3 3 8 0 8 6 3 6 9 7 1 2 0 2 1 6 0 9 2 7 1 9 7 0 5 4 9 8 4 5 8 9 7 7 4 5 8 5 4 4 1 3 1 8 7 7 0 8 9 11 1 4 5 1 7 5 5 1 1 7 9 6 1 1 5 7 0 1 3 7 8 7 6 2 0 9 5 3 9 9 8 4 9 9 6 2 1 7 5 6 2 7 4 9 2 4 4 9 8 7 4 3 0 7 2 9 0 4 9 7 7 0 7 0 2 7 9 3 0 5 9 2 4 3 2 8 0 9 1 0 4 3 0 5 1 6 0 9 9 0 9 0 4 3 7 9 3 6 3 2 0 5 9 9 3 2 9 2 2 3 6 8 0 9 8 0 0 2 7 9 2 12 8 2 2 6 5 0 8 8 4 5 6 8 9 2 7 2 5 4 2 4 8 0 2 9 7 8 6 9 9 6 8 1 4 0 7 6 9 3 7 3 5 9 5 6 5 4 0 7 1 4 4 9 4 0 2 1 1 4 7 4 6 5 3 5 6 8 4 9 3 9 8 9 6 8 7 7 2 1 1 0 0 8 1 7 2 8 1 9 2 1 4 4 7 3 6 6 7 2 5 8 3 6 9 8 4 1 7 8 4 3 7 8 5 3 4 8 9 8 7 9 9 7 6 6 3 2 8 9 3 8 4 4 8 9 5 3 2 0 3 2 5 4 6 9 12 4 4 8 9 5 4 7 5 8 6 8 3 3 1 9 0 9 2 6 8 3 0 7 6 2 6 9 9 8 2 6 5 5 8 1 5 5 3 2 8 4 8 6 0 6 2 1 5 9 6 1 8 6 5 5 5 0 0 0 2 9 4 9 4 1 3 1 3 5 1 8 3 2 0 8 8 5 0 1 2 6 2 0 9 3 4 1 8 2 3 5 4 5 6 0 3 6 0 5 5 1 8 7 4 4 2 5 5 8 4 9 3 6 5 7 7 7 3 5 4 5 6 8 1 5 6 6 6 3 2 0 0 6 9 8 7 2 9 8 6 9 1 5 6 12 6 2 7 9 1 2 0 9 2 1 4 0 2 0 9 1 5 8 0 0 8 7 4 8 4 4 5 2 1 8 1 1 6 3 1 6 4 4 5 9 2 7 2 0 7 4 3 1 6 1 4 2 5 8 1 3 4 3 7 1 4 1 7 5 2 3 7 2 0 9 4 7 0 7 2 7 3 3 1 8 0 5 1 5 4 1 1 1 9 3 2 1 6 5 3 2 6 7 8 3 2 4 7 9 4 4 2 2 7 5 8 6 5 9 9 5 0 0 3 4 4 1 5 7 0 6 0 5 0 9 8 3 0 0 9 1 6 1 1 8 6 8 4 4 12 5 6 6 2 4 5 7 6 1 6 5 3 6 6 2 2 4 5 6 8 5 8 9 3 2 2 6 8 9 6 7 6 4 5 3 2 1 3 5 4 8 3 1 3 1 3 5 9 8 8 0 4 1 2 1 8 7 4 7 9 1 5 7 0 2 1 3 9 1 2 0 2 5 3 2 1 0 9 3 6 0 0 0 7 1 6 5 3 6 2 5 3 7 1 3 9 4 2 0 3 9 2 5 6 1 1 4 6 6 9 1 1 2 5 2 1 8 2 9 6 7 7 3 4 3 3 2 7 3 3 9 0 9 5 0 5 0 7 5 1 4 7 0 9 12 1 7 1 4 3 8 2 5 1 8 3 9 1 7 2 6 3 8 4 2 0 3 3 7 0 2 5 5 7 1 4 1 7 7 4 8 1 4 1 4 0 5 9 7 0 3 9 6 9 1 3 1 5 8 2 2 0 5 1 6 4 9 0 5 9 3 0 9 1 0 0 3 4 3 8 7 2 6 4 0 2 2 0 0 9 0 8 3 6 3 7 9 6 1 8 3 3 0 2 5 2 5 5 8 3 6 1 8 6 9 1 4 0 3 1 9 0 8 2 6 1 1 2 1 0 8 0 9 1 5 0 4 1 9 5 6 7 8 8 0 3 8 4 6 12 2 3 6 4 7 0 4 5 3 7 1 9 5 0 7 5 8 3 5 9 1 6 2 6 7 7 0 9 9 8 0 3 2 6 7 4 9 0 5 9 4 4 0 1 0 1 5 8 8 7 3 7 5 6 4 8 7 9 2 0 5 5 6 9 8 9 2 2 7 9 5 8 6 3 5 3 8 5 5 2 1 9 5 4 0 7 6 0 2 9 2 4 7 3 4 0 9 3 5 0 4 1 2 2 3 8 9 9 4 4 4 8 1 8 6 7 4 0 1 4 5 9 4 6 4 7 6 9 7 4 7 5 5 5 9 2 5 2 5 1 4 4 0 2 12 9 7 8 8 4 5 7 1 8 4 7 3 7 7 7 2 5 7 4 6 4 2 2 8 4 7 7 6 5 4 5 6 6 1 6 2 4 2 0 7 8 9 6 3 9 4 6 3 5 8 9 8 1 8 9 6 8 4 8 9 1 2 7 7 4 5 6 2 5 1 5 8 1 4 1 5 5 9 5 5 1 5 5 5 8 7 1 8 6 3 3 0 9 6 9 5 9 1 9 1 5 6 5 7 9 0 6 2 6 7 8 4 3 7 4 4 1 8 1 0 4 5 4 0 5 1 7 4 9 4 6 8 7 1 4 8 2 7 0 0 3 3 0 6 //============================== #1 7 #2 10 #3 22 #4 11 #5 29 #6 24 #7 21 #8 8 #9 36 #10 23 #11 41 #12 30 #13 15 #14 30 #15 22 #16 14 #17 33 #18 20 #19 43 #20 28 #21 32 #22 38 #23 30 #24 47 #25 39 #26 12 #27 34 #28 22 #29 24 #30 22 #31 14 #32 16 #33 28 #34 36 #35 22 #36 21 #37 38 #38 31 #39 25 #40 24 #41 21 #42 29 #43 39 #44 41 #45 35 #46 37 #47 45 #48 45 #49 40 #50 35
Leave a Comment