主题:[讨论]C++,求高手解决
Description
宿舍楼决定举行CounterStrike游戏大赛,为了使比赛更为精彩,大家决定将所有参赛同学先平均分为东西部两大联盟再组队对战,根据之前比赛的统计,每个同学的游戏战斗力分别为S1,S2,S3...SN.(S<=100000)。现在需要你将参赛同学平均分到两大联盟中,使得两联盟的总战斗力的差为最小,以增加比赛的激烈性。要注意的是两联盟的人数不一定相同,比如一个战斗力90000的同学能够以一敌十。
Input
该程序有多组测试数据,每组测试数据第一行为整数N(1<=N<=20),表示有N个同学。接下去N行,为每个同学的战斗力。
Output
每组测试数据只需输出经过划分后两联盟的总战斗力差的最小值。
Sample Input
5
5
8
13
27
14
2
4
4
Sample Output
3
0
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int N,power[21],half,SUM,tempsum;
while(cin>>N)
{ SUM=0;
for(int i=0;i<N;i++)
{cin>>power[i];SUM+=power[i];}
half=SUM/2;
for(int i=0;i<N;i++)
for(int j=i;j<N;j++)
if(power[i]>power[j])
{
int t;
t=power[i];
power[i]=power[j];
power[j]=t;
}
tempsum=0;
for(int i=N-1;i>=0;i--)
{
if(tempsum+power[i]<=half)
{
tempsum+=power[i];
}
}
cout<<abs(SUM-2*tempsum)<<endl;
}
return 0;
}
>>>>>>>>>>>>>>>>
为什么WA呢???
宿舍楼决定举行CounterStrike游戏大赛,为了使比赛更为精彩,大家决定将所有参赛同学先平均分为东西部两大联盟再组队对战,根据之前比赛的统计,每个同学的游戏战斗力分别为S1,S2,S3...SN.(S<=100000)。现在需要你将参赛同学平均分到两大联盟中,使得两联盟的总战斗力的差为最小,以增加比赛的激烈性。要注意的是两联盟的人数不一定相同,比如一个战斗力90000的同学能够以一敌十。
Input
该程序有多组测试数据,每组测试数据第一行为整数N(1<=N<=20),表示有N个同学。接下去N行,为每个同学的战斗力。
Output
每组测试数据只需输出经过划分后两联盟的总战斗力差的最小值。
Sample Input
5
5
8
13
27
14
2
4
4
Sample Output
3
0
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int N,power[21],half,SUM,tempsum;
while(cin>>N)
{ SUM=0;
for(int i=0;i<N;i++)
{cin>>power[i];SUM+=power[i];}
half=SUM/2;
for(int i=0;i<N;i++)
for(int j=i;j<N;j++)
if(power[i]>power[j])
{
int t;
t=power[i];
power[i]=power[j];
power[j]=t;
}
tempsum=0;
for(int i=N-1;i>=0;i--)
{
if(tempsum+power[i]<=half)
{
tempsum+=power[i];
}
}
cout<<abs(SUM-2*tempsum)<<endl;
}
return 0;
}
>>>>>>>>>>>>>>>>
为什么WA呢???