[問題] 陣列中的陣列

看板C_and_CPP (C/C++)作者 (法蘭克福小商人)時間16年前 (2010/04/01 01:50), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) rest_job[15]在先前的處理中,已將用不到的那個數字擺到最後一個 接著要對應到after_buttle[15]找最小值 (rest_job[0]=1, after_buttle[1]=2這樣找) 所以採用after_buttle[rest_job[15]]的寫法 很奇怪的是,在原始碼中的這段: f=999; count_a=0; for(x=0;x<=job-2;x++) \\不讀rest_job最後一個 { if(after_buttle[rest_job[x]-1]<f) 在這裡 { f=after_buttle[rest_job[x]]; } } for(x=0;x<=job-2;x++) { if(after_buttle[rest_job[x]-1]==f) { count_a++; } } printf("%d\n",f); printf("%d\n",count_a); 怎麼跑f跟count_a都是0 而rest_job[15]輸出是{1,2,3,4,5,6,7,8,9,10,15,12,13,14,11}; after_buttle[15]輸出是{2,9,11,5,7,3,7,12,6,1,12,14,7,8,1}; 若單獨開一個檔案,前面再加上: int x; int job=15; int count_a=0; int rest_job[15]={1,2,3,4,5,6,7,8,9,10,15,12,13,14,11}; int after_buttle[15]={2,9,11,5,7,3,7,12,6,1,12,14,7,8,1}; 就能跑出我要的結果了 f=1, count_a=2 不曉得問題可能是出在哪邊呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.146.134 ※ 編輯: rothschilds 來自: 61.229.146.134 (04/01 01:52)

04/01 02:38, , 1F
battle拼錯字了
04/01 02:38, 1F

04/01 02:40, , 2F
剛查了,應該是bottle,不過我還是抓不出哪裡錯 ><
04/01 02:40, 2F

04/01 02:43, , 3F
after_buttle[15] 超出陣列範圍了 所以是未知的值
04/01 02:43, 3F

04/01 02:44, , 4F
你的rest_job裡有個值是15 你拿這個值去當陣列的索引
04/01 02:44, 4F

04/01 02:44, , 5F
所以取到未知的值 如果這個未知的值剛好是0 那f就=0
04/01 02:44, 5F

04/01 02:51, , 6F
我抓出來了,老天.....
04/01 02:51, 6F
※ 編輯: rothschilds 來自: 61.229.146.134 (04/01 02:56)
文章代碼(AID): #1BiujFTm (C_and_CPP)
文章代碼(AID): #1BiujFTm (C_and_CPP)