题目描述
上体育课时,某班 n 个小朋友排成一列。随着体育老师的一声“向左看齐”,同学们都朝着左边看。现在每个同学想知道左边的同学中,有多少人的身高比自己矮。
输入格式
第一行输入一个整数 n (n≤100),表示班级人数。
第二行输入 n 个整数,用空格间隔,依次表示从左到右每个同学的身高(身高在 [1,200] 范围内)。
输出格式
一行内输出 n 个整数,用空格间隔,依次表示每个同学的左边比自己矮的人数。
Sample Input
5
3 7 2 5 1
Sample Output
0 1 0 2 0
思路
两重 for 循环,比较身高,如果比当前同学矮,计数+1,最后输出计数。
C语言代码:
#include <stdio.h>
#include <math.h>
#include <string.h>
const long long N = 1e6 + 10;
long long n, cnt = 0;
int main()
{
long long a[N];
scanf("%d", &n);
for(long long i = 0; i < n; i++)
scanf("%d", &a[i]); //输入身高
for(long long i = 0; i < n; i++)
{
cnt = 0;
for(long long j = i; j >= 0; j--) //遍历第i个人左边的人
if(a[i] > a[j]) cnt++; //比他矮,就加一
printf("%d ",cnt); //输出
}
return 0;
}
C++代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, num[105];
while(cin >> n)
{
for(int i = 0; i < n; i++)
{
cin >> num[i];
int cnt = 0;
if(i > 0)
{
for(int j = 0; j < i; j++)
if(num[j] < num[i]) cnt++;
cout << " " << cnt;
}
else cout << cnt;
}
cout << endl;
}
return 0;
}
没有C语言基础的同学们,可以先学习一下C语言语法,我会整理好,后面发出来
我已经写好了,可以去C语言程序设计专栏看第一周的内容。