微软笔试题,机器人消砖块
生活随笔
收集整理的這篇文章主要介紹了
微软笔试题,机器人消砖块
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
我比較傻叉,居然忘了用動(dòng)態(tài)規(guī)劃做,用了遞歸,各種邊界判斷,而且數(shù)組稍大一點(diǎn)就棧溢出。遞歸可以剪支,稍微減少一些遞歸次數(shù)。不管怎么樣還是貼上自己的傻叉代碼吧
#include<iostream> using namespace std;const int M = 10;///列 const int N = 10;///行 int min = N+M; char A[N][M]; ///d=1代表向下走,d=0代表向右走 void f(char A[N][M], int i,int j,int d, int result) {if (i == N-1&&j == M-1){if (result < min){min = result;}return;}if (d == 0) ///向右走{if (j + 1 <= M - 1) ///沒(méi)走到邊界{if (A[i][j + 1] == 'b') ///下一步是障礙物{f(A, i, j + 1, 0, result + 1); ///清楚障礙物if (i + 1 <= N - 1) ///走下面{if (A[i + 1][j] == '0'){f(A, i + 1, j, 1, result);}else{f(A, i + 1, j, 1, result + 1);}}}else{f(A, i, j + 1, 0, result); ///向右走if (i + 1 <= N - 1) ///向下走{if (A[i + 1][j] == '0'){f(A, i + 1, j, 1, result + 1);}else{f(A, i + 1, j, 1, result + 2);}}}}else ///已經(jīng)向右行走到邊界{///此處i+1<=N-1,否則應(yīng)該在遞歸出口f(A, i + 1, j, 1, result);}}else 向下行走{if (i + 1 <= N - 1) ///下邊依舊有路{if (A[i + 1][j] == 'b'){f(A, i + 1, j, 1, result + 1);///向右繼續(xù)走if (j + 1 <= M - 1){if (A[i][j + 1] == '0'){f(A, i, j + 1, 0, result);}else{f(A, i, j + 1, 0, result + 1);}}}else {if (j + 1 <= M - 1){if (A[i][j + 1] == '0'){f(A, i, j + 1, 0, result + 1);}else{f(A, i, j + 1, 0, result + 2);}}f(A, i + 1, j, 1, result);}}else ///已經(jīng)向下行走到邊界{f(A, i, j + 1, 0, result);}} }/* int main() {for (int i = 0; i < N; i++){for (int j = 0; j < M; j++){A[i][j] = '0';}}A[0][4] = 'b';A[0][5] = 'b';A[2][5] = 'b';A[3][3] = 'b';A[3][4] = 'b';A[3][5] = 'b';A[2][6] = 'b';for (int i = 0; i < N; i++){for (int j = 0; j < M; j++){cout << A[i][j] << " ";}cout << endl;}f(A, 0, 0, 0, 0);cout << min << endl; } */
轉(zhuǎn)載于:https://www.cnblogs.com/jinweiseu/p/5372963.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的微软笔试题,机器人消砖块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 求幂运算、多项式乘法及Horner法则的
- 下一篇: robotframework使用Requ