CPU算力分配
# include <stdio.h>
# include <stdlib.h>
typedef struct Team *Group;
struct Team
{
int L1,L2; //每组中CPU的数量
int A[100],B[100]; //每组中每个CPU算力大小
int Asum,Bsum; //每组中CPU总算力
};
int Asum_cmp_Bsum(Group group) //比较A,B的总算力
{
int flag;
if(group->Asum == group->Bsum)
flag=1;
else
flag=0;
return flag;
}
Group Input() //输入每组中CPU数量
{
int i;
Group group;
group = (Group)malloc(sizeof(Team));
group->Asum = 0;
group->Bsum = 0;
//A,B两组CPU数量
scanf("%d",&group->L1);
scanf("%d",&group->L2);
//A组每个CPU的算力、总算力
for(i=0;i<group->L1;i++)
{
scanf("%d",&group->A[i]);
group->Asum += group->A[i];
}
//B组每个CPU的算力、总算力
for(i=0;i<group->L2;i++)
{
scanf("%d",&group->B[i]);
group->Bsum += group->B[i];
}
return group;
}
int Amax(Group group) //找出A组中CPU的最大算力
{
int i,max;
max=-1;
for(i=0;i<group->L1;i++)
{
if(max<=group->A[i])
max=group->A[i];
}
return max;
}
int main()
{
int i,j,temp,temp_A,temp_B,Sum_A,Sum_B,Amin,Bswap;
/*
temp:交换的中间容器,temp_A:存放A[i],temp_B:存放B[i];
Sum_A:A当前总算力,Sum_B:B当前总算力;
Amin:存放A组中CPU最小算力,Bswap:存放交换的B组CPU算力
*/
//创建组
Group group;
group=Input(); //输入A,B两组相应数据
Amin=Amax(group); //记录A组中最大算力
Sum_A = group->Asum;
Sum_B = group->Bsum;
Bswap=0;temp=0,temp_A=0,temp_B=0;
//判断A,B两组总算力
if(Asum_cmp_Bsum(group))
printf("A,B总算力相等");
else
{
for(i=0;i < group->L1;i++)
{
temp_A = group->A[i];
for(j=0;j < group->L2;j++)
{
if(Sum_A != Sum_B)
{
temp = temp_A;
temp_B = group->B[j];
Bswap = temp_B;
//交换后计算A,B新的总算力
temp_A = temp_B;
temp_B = temp;
Sum_A = Sum_A - temp_B + temp_A;
Sum_B = Sum_B - temp_A + temp_B;
}//if
if(Sum_A == Sum_B && Amin>group->A[i])
Amin=group->A[i];
}//j-for
}//i-for
}//else-if
//打印A,B需交换的CPU算力
printf("%d %d",Amin ,Bswap);
return 0;
}
更多推荐



所有评论(0)