//返回結果的有效標誌 enum Status {VALID,IN_VALID}; int gStatus = VALID; int strToInt(const char* str) { long long result = 0;//儲存結果 gStatus = IN_VALID; //每次調用時都初始化為IN_VALID if(str != NULL) { const char* digit = str; bool minus = false; if(*digit == '+') digit++; else if(*digit == '-') { digit++; minus = true; } while(*digit != '\0') { if(*digit >= '0' && *digit <= '9') { result = result * 10 + (*digit -'0'); //溢出 if(result > std::numeric_limits<int>::max()) { result = 0; break; } digit++; } //非法輸入 else { result = 0; break; } } if(*digit == '\0') { gStatus = VALID; if(minus) result = 0 - result; } } return static_cast<int>(result); }
2.
/** *返回總路徑數 *參數m:表示矩形的橫向格子數 *參數n:表示矩形的縱向格子數 */ int getTotalPath(int m, int n) { //如果橫向格子數為1,則類似“日”字,此時路徑數為縱向格子數加1 if(m == 1) return n + 1; //如果縱向格子數為1,此時路徑數為橫向格子數加1 if(n == 1) return m + 1; //由於從當前點出發,只能向右或向下移動: //向右移動,則接下來就是getTotalPath(m-1, n)的情形 //向下移動,則接下來就是getTotalPath(m, n-1)的情形 return getTotalPath(m-1, n) + getTotalPath(m, n-1); }