[問題] 兩段程式碼 那一個跑得快

看板C_and_CPP作者 (真兒)時間14年前 (2010/04/26 20:29), 編輯推噓8(8010)
留言18則, 10人參與, 最新討論串1/1
小妹現在寫了兩段程式碼,跑出來的結果是一樣的, 我想請問的是這兩段, 哪一段跑得快??? 這兩段程式碼最主要是要做 猜數字的比對... -------------------(以下是A段)--------------------------- int what_A=0,what_B=0; for(int i=0 ; i<3 ; i++){ if(RandomAns[i]==PlayerAns[i]){ what_A++; } else{ for(int j=0 ; j<3 ; j++){ if(RandomAns[i]==PlayerAns[j]){ what_B++; } } } } ----------------------(以下是B段)--------------------------- int what_A=0,whta_B=0; for(int i=0 ; i<3 ; i++){ for(int j=0 ; j<3 ; j++){ if((i==j)&&(RandomAns[i]==PlayerAns[j])){ what_A++; } else{ if(RandomAns[i]==PlayerAns[j]){ what_B++; } } } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.135.65.53

04/26 20:30, , 1F
其實妳可以自己試試看 XD
04/26 20:30, 1F

04/26 20:32, , 2F
應該A稍微快一點,省了(i==j)的判斷
04/26 20:32, 2F

04/26 20:46, , 3F
第二段的邏輯怪怪的 為什麼RandomAns[i]==PlayerAns[j]
04/26 20:46, 3F

04/26 20:46, , 4F
出現了兩次咧..@@
04/26 20:46, 4F

04/26 20:48, , 5F
如果最佳化開下去 B會比較快吧我猜..
04/26 20:48, 5F

04/26 20:54, , 6F
holymars 可我仍需RandomAns[i]==PlayerAns[j]的判斷
04/26 20:54, 6F

04/26 20:55, , 7F
B 比較容易做 auto vectorization。
04/26 20:55, 7F

04/26 20:55, , 8F
你應該把RandomAns[i]==PlayerAns[j]提到外面先判斷
04/26 20:55, 8F

04/26 20:57, , 9F
if(RA[i]==PA[j]) (i==j)?what_A++:what_B++;
04/26 20:57, 9F

04/26 21:58, , 10F
沒圖敢自稱小妹 樓下請問該如何處理?
04/26 21:58, 10F

04/26 22:01, , 11F
版規七~~
04/26 22:01, 11F

04/26 22:03, , 12F
錯了是版規八 ~~ XD
04/26 22:03, 12F

04/27 01:29, , 13F
沒有版規8阿~
04/27 01:29, 13F

04/27 10:08, , 14F
樓上一定沒有看某板....XDD
04/27 10:08, 14F

04/28 00:44, , 15F
除非你能確保RA裡面不會重複 與 PA裡面不會重複
04/28 00:44, 15F

04/28 00:44, , 16F
不然這兩段程式碼應該會有不同的結果
04/28 00:44, 16F

04/28 00:44, , 17F
如果能確保不會重複 應該可以使用break減少一些運算
04/28 00:44, 17F

04/28 00:45, , 18F
更正一下 應該只有PA裡面不會重複這個限制
04/28 00:45, 18F
文章代碼(AID): #1BrOSd3C (C_and_CPP)