Re: [問題] 不解的程式邏輯

看板C_and_CPP作者 (艾斯寇德)時間14年前 (2010/08/01 21:58), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
: int a=1; : zero=WRL[a]; : one=0; : for(i=0;i<imagesize1;i++) : { : for(j=0;j<imagesize2;j++) : { : if(one==0) : { : p_image[i][j]=0; : if(zero==1){one=BRL[a];} : zero=zero-1; : } : if(zero==0) : { : p_image[i][j]=1; : if(one==1){a++;zero=WRL[a];} : one=one-1; : } : } : } 不曉得你想要的是什麼 不過這樣用狀態來處理資料的程式大概是經過長時間被多人維護的結果, 亦或是想破頭的結果。 有沒有想見到一種情況,恰好 one == 0 zero == 1 BRL[a] == 0 那麼p_image[i][j]先被設為0,因為one==0 接著因為看到zero-=1; 使得zero==0成立,這時你的p_image[i][j]就會被改為1 且one已經是0了,所以不會有`a++`,更沒有`zero=WRL[a];` 但one-=1是會動的,這時one會成為-1。 那麼之後一定只會跑 if(zero == 0){ ... } 也就是p_image[i][j]必然會被設為1 而且one必須從-1一直遞減直到再次回到1才會得到{a++; zero=WRL[a];} 這張圖至少必須大到 2^15 x 2^16 才有機會看到接下來不是1的結果 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.114.41 ※ 編輯: sunneo 來自: 140.127.114.41 (08/01 21:59)

08/05 19:46, , 1F
呵~感謝熟人@@ 不過我解決了啦而且我忘記說我的RL存放>1
08/05 19:46, 1F
文章代碼(AID): #1CLNsTVb (C_and_CPP)