您的位置:首页 > 其它

学校1001:求值,1002.项目投标

2014-01-16 10:54 148 查看
1001:求值

给你N个整数,对它们进行非递减排序,令P为排序后的奇数项之和,Q为排序后的偶数项之和,求T=|P-Q|。

input:输入的第一个整数T表示有多少组测试数据(1≤T≤10)。每组测试数据的第一行是整数N(1≤N≤50,000)。接下来是N行,每行是一个绝对值小于1000的整数

output:为每组测试数据输出一行,由T值组成。

sample input

1 3 1 3 2

sample outpu

2

#include <stdio.h>

#include <stdlib.h>

#include<math.h>

int main()

{

long T,i,j,k,num[500000],t;

long N;

scanf("%ld",&T);

for(k=0; k<T; k++)

{

long P=0;

long Q=0;

scanf("%ld",&N);

for(j=0; j<N; j++)

{

scanf("%ld",&num[j]);

}

for(i=0; i<N-1; i++)

{

for(j=i+1; j<N; j++)

{

if(num[i]>num[j])

{

t=num[i];

num[i]=num[j];

num[j]=t;

}

}

}

for(i=0; i<N; i++)

{

if((i+1)%2==1)

P+=num[i];

else

Q+=num[i];

}

printf("%ld\n",abs(P-Q));

}

return 0;

}

注意点:1:int值最大为32767,所以用long

2,long
P=0; long Q=0;在循环内清零!

3,几大排序方法要搞懂!

4,i可以作为判断。

1002
:项目投标


某项目可以分为n个不同的子项目,每个子项目都是独立的。现在有m个公司来投标这些子项目,每个公司对这n个子项目都给出了报价。一个公司可以承担若干个项目,一个项目不能由2个或2个以上的公司共同完成。请你给出完成整个项目的最高和最低报价。

输入的第一个整数T表示有多少组测试数据(1≤T≤10)。每组测试数据的第一行是整数n(1≤n≤1000),表示有项目可以分n个子项目;第二行是整数m(1≤m≤1000),表示有m个公司来投标。然后是m行n列的正整数,第i行第j列的正整数k(1≤k≤100),表示第i家公司对第j个子项目的报价。

为每组测试数据输出两行,第一行是整个项目的最高报价,第二行是整个项目的最低报价.

1

5

5

90 90 90 85 90

90 85 90 90 85

90 90 85 90 90

90 90 90 90 85

85 90 85 90 90

450

425

#include
<stdio.h>

#include <stdlib.h>

int price[1001][1001];

int main()

{

int T,n,m,i,j,t;

scanf("%d",&T);

for(t=0;t<T;t++)

{

int sum_max=0,sum_min=0;

scanf("%d %d",&n,&m);

for(i=0;i<m;i++)

for(j=0;j<n;j++)

scanf("%d",&price[i][j]);

for(i=0;i<n;i++)

{

int max=0,min=101;

for(j=0;j<m;j++)

{

if(price[j][i]>max){max=price[j][i];}

if(price[j][i]<min){min=price[j][i];}

}

sum_max+=max;

sum_min+=min;

}

printf("%d\n%d\n",sum_max,sum_min);

}

return 0;

}

注意:1:比较大的数组应尽量声明在main函数外。

2: 还是要注意每次循环都要清零!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: