杭电2019:
有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。
有一个很简便的算法。用sort函数。我的博客里也有对sort函数的简单解释。
sort函数
直接代码。
#include<stdio.h>
#include<iostream>
using namespace std;
#include<algorithm>
int main()
{
int a[1000],n,b;
while(scanf("%d%d",&n,&b)!=EOF)
{
if(n == 0 && b == 0)
break;
int i;
for(i = 0; i < n ;i ++)
scanf("%d",&a[i]);
a[n] = b;
sort(a,a+n+1);
printf("%d",a[0]);
for(i = 1;i < n+1;i ++)
printf(" %d",a[i]);
printf("\n");
}
return 0;
}
杭电2020:
输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。
是排列的升级版。原以为可以用sort函数,但是不行。
看代码。
#include<stdio.h>
int main()
{
int a[1000],n,i,j,h;
while(scanf("%d",&n)!=EOF)
{
if(n == 0)
break;
for (i = 0; i < n; i++)
scanf("%d",&a[i]);
for(i = 0; i < n; i ++)
{
int max;
if(a[i] < 0)
max = - a[i];
else
max = a[i];
for(j = i+1; j < n; j ++)
{
int max1;
if(a[j] < 0)
max1 = - a[j];
else
max1 = a[j];
if(max < max1)
{
h = a[i];
a[i] = a[j];
a[j] = h;
max = max1;
}
}
}
printf("%d",a[0]);
for(i = 1; i < n; i ++)
printf(" %d",a[i]);
printf("\n");
}
return 0;
}