学校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: 还是要注意每次循环都要清零!
给你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: 还是要注意每次循环都要清零!
相关文章推荐
- 第二十三讲项目3-两段函数求值
- C语言及程序设计.第二十三课.项目3.两段函数求值
- C++第1次实验(提高班)项目二:分段函数求值
- 为学校的“古老”项目加功能
- 项目1:分段函数求值
- 第8周 项目3 多分段函数求值
- 第八周项目三——多分段函数求值(if~else)
- 第八周OJ项目-求值
- 第8周项目1分段函数求值
- 第八周项目一之分段函数求值
- 第八周项目1 分段函数求值
- 第八周项目 3 分段函数求值(if~else~语句)
- 第八周项目三:多分段函数求值(2)
- 【笔记】学校项目开发中所了解的一些浏览器之间的差异
- 第5周实践项目4 用栈实现运算表达式求值
- 第8周 项目1 分段函数求值
- 第24讲项目1——分段函数求值
- 第八周项目一——分段函数求值
- 第八周项目三:多分段函数求值(switch语句)
- 第八周项目三多分段函数求值 方法二switch语句