作者Lipstick12 (你好)
看板C_and_CPP
標題[ACM] 10032 Tugs of war
時間Sat Aug 14 02:07:08 2010
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
題號: ACM 10032
遇到的問題: WA
有問題的code:
#include<stdio.h>
#include<stdlib.h>
int main(void){
int case_num;
int p[100];
int i,j,k;
int p_num;
int temp;
int team_a,team_b; /* 兩個 team 目前的體重和*/
int c_a,c_b; /* 兩個 team的人數 */
scanf("%d",&case_num);
for ( i = 0 ; i < case_num ; i ++ ){
scanf("%d",&p_num);
for ( j = 0 ; j < p_num ; j ++ ){
scanf("%d",&p[j]);
}
for ( j = 0 ; j < p_num ; j++ ){
for ( k = j+1 ; k < p_num ; k++ ){
if ( p[k] < p[j] ) {
temp = p[j];
p[j] = p[k];
p[k] = temp;
}
}
}/* sort */
team_a = 0;
team_b = 0;
c_a = 0;
c_b = 0;
j = 0 ;
k = p_num-1;
while ( j <= k ){
if ( c_a == 0 && c_b == 0 ){
team_a += p[k--];
team_b += p[k--];
c_a++;
c_b++;
}
else if ( team_b > team_a && c_b > c_a ){
team_a += p[k--];
c_a++;
}
else if ( team_b > team_a && c_b < c_a ){
team_b += p[j++];
c_a++;
}
else if ( team_b > team_a && ( c_a == c_b ) ){
team_a += p[k--];
c_a++;
}
else if ( team_a > team_b && ( c_a > c_b ) ){
team_b += p[k--];
c_b++;
}
else if ( team_a > team_b && ( c_a < c_b ) ){
team_a += p[j++];
c_a++;
}
else if ( team_a > team_b && ( c_a == c_b ) ){
team_b += p[k--];
c_b++;
}
else if ( team_a == team_b && ( c_a == c_b ) ) {
team_b += p[j++];
c_b++;
}
else if ( team_a == team_b && ( c_a < c_b ) ){
team_a += p[j++];
c_a++;
}
else {
team_b += p[j++];
c_b++;
}
}
if ( team_a > team_b )printf("%d %d\n\n",team_b,team_a);
else printf("%d %d\n\n",team_a,team_b);
}
return 0;
}
補充說明:
測了sample input 和自己想的測資都會對
但是放上去還是錯了
有爬文看板上之前也有一篇10032的解法 但是還是想知道我的解法為什麼錯了
我的想法是 一開始拿到資料後 先sort 然後把最大的兩個先分別塞給
team_a team_b 接下來每跑一次迴圈 就看team_a team_b 哪個大
以及目前的人數狀態 決定給大的值 或小的值 以及給哪個team
希望板上的高手可以幫我看一下 非常感激:)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.217.179
推 LPH66:1 7 2 48 48 49 49 50 50 輸出 148 148 08/14 03:05
→ LPH66:(50+49+49一隊 50+48+48+2一隊) 08/14 03:06
→ LPH66:本題請愛用 DP 08/14 03:06
→ x000032001:如你所測的 這只是個假解 只能過爛測資的假解XD 08/14 10:23
→ Lipstick12:可以請問一下DP是什麼嗎XD? 08/14 12:21
→ loveme00835:Dynamic Programming 08/14 12:23