从前有很多小胖子,他们喜欢互相比谁更可爱,每一个小胖子都有一个“可爱数值”,有一天很多小胖子横着排成一行, 每一个小胖子都只能看见右边的人,小胖子们想知道自己看的见的人里面有多少个比自己可爱的人,你能帮帮可爱的小胖子们么?用c语言编写
时间: 2023-05-30 12:01:37 浏览: 91
一个用c语言写的小程序
以下是使用C语言编写的解决方案:
```c
#include <stdio.h>
int main() {
int n;
scanf("%d", &n); // 输入小胖子的数量
int a[n], ans[n]; // a数组存储小胖子的可爱数值,ans数组存储比当前小胖子可爱的人数
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]); // 输入每个小胖子的可爱数值
ans[i] = 0; // 初始化比当前小胖子可爱的人数为0
}
for (int i = n - 1; i >= 0; i--) { // 从最后一个小胖子开始向前遍历
for (int j = i + 1; j < n; j++) {
if (a[j] > a[i]) { // 如果当前小胖子右边的小胖子比他可爱
ans[i]++; // 就把比当前小胖子可爱的人数加1
} else { // 如果当前小胖子右边的小胖子比他不可爱
ans[j]++; // 就把比右边的小胖子可爱的人数加1
}
}
}
for (int i = 0; i < n; i++) {
printf("%d ", ans[i]); // 输出每个小胖子看得见的比自己可爱的人数
}
return 0;
}
```
这个程序的思路是,从最后一个小胖子开始向前遍历,对于每个小胖子,它右边的小胖子要么比它可爱,要么不比它可爱。如果当前小胖子右边的小胖子比它可爱,就把比当前小胖子可爱的人数加1,否则就把比右边的小胖子可爱的人数加1。最后输出每个小胖子看得见的比自己可爱的人数。
阅读全文