上车
欢迎进入我的C语言世界
题目
Problem Description
有N个人排成一队按顺序上车,座位在前排并且排在队伍前面的人上车后会对座位在后面并且排他在后面的人造成阻碍。现给出每个人坐在第几排,假设这辆车有100排,每一排有100个座位。定义每个人的上车困难度为比这个人先上车并且座位在其前排的人数。问N个人的上车困难度之和。
Input
第一行一个整数T(T<=100),表示有T组数据。
每组数据先输入一行一个整数N(1<=N<=100),表示人数,接下来一行输入N个不超过100的正整数,输入的第i个数Ai表示第i个上车的人的座位是第Ai排。
Output
每组数据对应一行输出,即N个人上车的困难度之和。
Sample Input
3
3
1 2 3
3
3 2 1
3
1 2 2
Sample Output
3
0
2
答案
下面展示 实现代码
。
#include <stdio.h>
#include <iostream>
#include <cstring>
#define Max 107
int T,N;
int arr[Max];
using namespace std;
int main()
{
while(scanf("%d",&T) != EOF)
{
for(int i = 0; i < T; i++)
{
scanf("%d",&N);
memset(arr,0,sizeof(arr));
for(int j = 0; j < N; j++)
{
cin >> arr[j];
}
int num = 0;//记录有几个数字比当前的大
for(int j = N-1; j >= 0; j--)
{
for(int k = 0; k < j; k++)
{
if(arr[j] > arr[k])
{
num++;
}
}
}
cout << num << endl;
}
}
return 0;
}
本题感悟
本块内容可能来自课本或其他网站,若涉及侵权问题,请联系我进行删除,谢谢大家啦~
思路:
本题实际上是计算一个数组中的某一个数字之前有几个比他小的数字
以上。