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;
}