當前位置:編程學習大全網 - 編程軟體 - 用c語言實現排列組合問題(華為軟件面試試題之壹)

用c語言實現排列組合問題(華為軟件面試試題之壹)

/* 算法 */

// 從剩余的nM個籃子裏空出nX = m*n - x;個球

int GetBall(int nX, int nM, int n) {

int nA;

int nS = 0;

/* 如果這次情況裏確定從壹個籃子裏空出球 */

// 如果nM等於1 返回 1;

if (nX <= n) {

/* 最少從壹個籃子裏拿走,最多必須從 nM 與 n 中 較少個數的籃子裏拿走 */

// 當nA從 1 增加到 nX,循環執行下行語句

nS += GetBall(nA,1,n) + GetBall(nX-nA,nM-1,n);

// 返回 nS;

} else if (nX > n) {

/* 1. 知道剩下的籃子數目nM,2. 可以保證nX-nA <= nM*n */

// 當nA從 n 減少到 nX-n*nM,循環執行下行語句

nS += GetBall(nA,1,n) + GetBall(nX-nA,nM-1,n);

// 返回 nS;

}

}

int main() {

int m,n,x;

m = 5; n = 6; x = 22;

printf("%d\n",GetBall(m*n-x, m, n));

return 0;

}

  • 上一篇:TC簡單開發是什麽東西?
  • 下一篇:如何測量樹葉的周長
  • copyright 2024編程學習大全網