@zhao
榪欐槸紼嬪簭鐨勪竴涓猙ug.
鏍規嵁浣犵粰鍑虹殑"2 0 0 0 0 0",
灝界絎?4琛屼腑緇檕pt[mid]璧嬪紅rue,浣嗙▼搴忓嵈鎵ц涓嶅埌36琛屼簡.
鍙互鍋氬涓嬫洿姝?
36 if (opt[mid]) //鍒ゆ柇鏄惁宸茬粡姹傚嚭緇撴灉
37 {
38 printf("Can be divided.\n\n");
39 return;
40 }
41 for (int k=1;k<=stone[i];k++) //鍦ㄥ垰鎵懼埌鐨勫彲琛宩鍩虹涓婂姞鐭沖ご.
42 {
43 if (j+k*i>mid || opt[j+k*i]) break; //濡傛灉宸茬粡澶т簬鎬諱環鍊肩殑涓鍗妋id錛屾垨opt[j+k*i]宸茶綆楋紝璺沖嚭寰幆
44 opt[j+k*i]=true;
45 }
灝嗕笂榪扮殑if璇彞鍜宖or寰幆瀵規崲.
@榛勬渤鍕囪?br>@lymfs
opt[j+k*i]. 榪欓噷j鍒濆鍖栦負max,騫朵笉鏂噺灝?
鎴戜滑娉ㄦ剰鍒?涓嬩竴嬈″驚鐜腑max瀹為檯涓婃槸鐢變笂涓嬈$殑浠峰?#215;鏁伴噺(i*stone[i])绱鑰屾垚;
鑰屽湪绱榪囩▼涓?opt鐩稿簲浣嶇疆涓嶆柇璧嬪紅rue.
鍒氬紑濮媕==max鐨勬椂鍊?opt[j+k*i]鏄劇劧涓嶅彲鑳芥垚绔?
鈭祄ax鏄互鍓嶆墍鏈変環鍊肩殑鍜?鎺掗櫎max>mid鐨勬儏鍐?,
姝ゆ椂j+k*i鏄劇劧澶т簬max,鍗硂pt[j+k*i]浠庢湭琚祴鍊艱繃.
榪欏氨鏄opt[j+k*i]==true鎴愮珛鐨勬儏鍐墊槸鍦╦涓嶆柇鍑忓皬鐨勮繃紼嬩腑鍙戠敓鐨?
姝ゆ椂,鍒嗕袱縐嶆儏鍐?
鈶爅+k*i≥max.
闄や簡opt[max],opt[j+k*i]鏄?strong>鏈for(int j=max;j>=0;j--)寰幆涓璧嬪紅rue,
鍗充笉瀛樺湪opt[j+k*i]==true鐨勬儏鍐?
鈶+k*i<max.
鍙互灝唈+k*i鐪嬪仛灝忎簬max鐨刯'.
鏄劇劧j'鏄敱max涓嶆柇鍑忓皬寰楀埌,j鐢眏'涓嶆柇鍑忓皬寰楀埌,
opt[j]==true, opt[j']==true, j' - j == k*i.
j
''==j+(k+1)*k, opt[j
'']=?
榪樻槸鏃犳硶鐢ㄦ暟瀛﹁瘉鏄?緇х畫鐮旂┒...榪樿鍗氫富鎸囩偣涓?

]]>