1 条题解

  • 0
    @ 2025-7-31 16:12:09

    是我!我来更新题解辣!

    (清嗓) 来,这道题主包没有只用一个循环做的想法。所以,除了主包又建了一个除了题目要求输入的a数组的b数组。

    int n,a[1005],b[1005];

    (因为题目中并没有明确说明n的取值范围,所以姑且定为0<=n<=1000)

    for(int i=1; i<=n; i++){ cin>>a[i]; b[i]=a[i]; }

    其目的是把a数组里的所有元素值赋至b数组。(很恶心……)

    然后:

    sort(a+1,a+n+1);

    是的,主包最爱的sort排序!(我循环就从1开始那咋了~)

    介绍一下,sort排序函数是一种非常便利的升序排序函数(就比如sort(a+1,a+n+1)这个排序就是由a[1]到a[n]的n个元素进行从小到大的排序)

    由于题目中让我们找到最小的元素(也就是我们现在进行sort排序后的a[1])的最后位置,那么我们可以直接从b[n]开始遍历(这就是主包建立b数组的原因)

    如果找到了第i个值 b[i]=a[1],那么直接输出i,并终结程序(因为所有中,所有元素改变的都是位置而不是值,所以不存在找不到的情况)

    接下来就是主包的AC代码:

    #include<bits/stdc++.h>

    using namespace std;

    int main() {

    int n,a[1005],b[1005];
    cin>>n;
    for(int i=1; i<=n; i++) {
    	cin>>a[i];
    	b[i]=a[i];
    }
    sort(a+1,a+n+1);
    for(int i=n; i>=1; i--) {
    	if(b[i]==a[1]) {
    		cout<<i;
    		return 0;
    	}
    }
    return 0;
    

    } 好的,再次重申,本题解仅供参考!!禁抄!!(抄了咬你)

    • 1

    信息

    ID
    630
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    22
    已通过
    10
    上传者