T-1037(周新婷)
A-有序序列合并
将两个升序序列输入再合并为一个有序序列输出。只需将两个升序序列放入在一个数组中,进行快速排序进行排序即可。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
int n,m,a[1000],b[1000],i,c[2000];
cin>>n>>m;
for(i=0;i<n;i++)
{
cin>>a[i];
c[i]=a[i];
}
for(i=0;i<m;i++)
{
cin>>b[i];
c[n+i]=b[i];
}
sort(c,c+m+n);
for(i=0;i<m+n;i++)
printf("%d ",c[i]);
return 0;
}
B-Dragon
目的就是将多组四个数据进行从大到小的排序(不包括前导0)。利用while实现多组数据输入输出,利用选择排序对数据进行排序再输出即可(注意利用if来排除如果是前导0则输出0)。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
int a,b,c,d,i,j;
while(cin>>a>>b>>c>>d)
{
int h[4];
h[0]=a,h[1]=b;h[2]=c,h[3]=d;
for(int i=0;i<4;i++)
{
int maxV=h[i];
for(int j=i+1;j<4;j++)
{
if(maxV<h[j])
swap(maxV,h[j]);
}
h[i]=maxV;
if(h[0]==0) {printf("0");break;}
printf("%d",h[i]);
}
printf("\n");
}
}
C-花样方阵
首先输入T确定输入几组数据,利用while控制循环次数,将同学的位置坐标放入到二维数组中,利用for循环输入一行数据并计算一行数据,将计算得到的时间存入新的数组中,对最后得到的新数组进行快速排序,但只输出最后一个数。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<math.h>
using namespace std;
int main()
{
int T,n,i,j,t[n];
cin>>T;
while(T--)
{
cin>>n;
int h[n][4],t[n];
for(i=0;i<n;i++)
{
for(j=0;j<4;j++)
cin>>h[i][j];
t[i]=fabs(h[i][0]-h[i][2])+fabs(h[i][1]-h[i][3]);
}
sort(t,t+n);
printf("%d\n",t[n-1]);
}
return 0;
}
E-小H和迷宫
将百分比数放入到数组中进行快速排序排除大小,要使怪兽血量损失最多,则将总乘最大百分比(剩余药品中)。每次削减的血量总用double型表示,计算剩余血量进行强制转换取整。最终利用总血量减去第三次剩余的血量输出即可。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
int N,a,b,c;
cin>>N>>a>>b>>c;
int h[3]={a,b,c}; //把a,b,c放进数组进行排序
sort(h,h+3); //从小到大排序然后倒着乘
double w1=N*1.0*h[2]/100.0; //第一次削减的血量=总血量*最大百分比,取整
int w11=(double)N-w1; //第一次剩余的血量=总血量-第一次削减的血量,取整
double w2=w11*1.0*h[1]/100.0; //第二次削减的血量=第一次剩余的血量*倒二百分比,取整
int w22=(double)w11-w2; //第二次剩余的血量=第一次剩余的血量-第二次削减的量,取整
double w3=w22*1.0*h[0]/100.0; //第三次削减的血量=第二次剩余的血量*最小百分比,取整
int w33=(double)w22-w3; //第三次剩余的血量=第二次剩余的血量-第三次削减的血量,取整
printf("%d\n",N - w33);
return 0;
}
,

京公网安备 11010502036488号