| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 46 人关注过本帖
标题:为什么我的代码可以无限输入TaT
只看楼主 加入收藏
bug芒果核
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2025-9-12
结帖率:100%
收藏
 问题点数:30 回复次数:4 
为什么我的代码可以无限输入TaT








#include<stdio.h>
int main(){
    int n,m,min=0,ans=99999;
    scanf("%d%d",&n,&m);
    int a[n];
    for(int i=0;i<n;i++){
        scanf("%d",a[i]);
    }
    for(int i=0;i<n-m;i++){
        int t=i;
        while(m--){
            min+=a[t];
            t++;
        }
        if(min<ans) ans=min;
    }
    printf("%d",ans);
    return 0;
}
题目描述
最近有 n 个不爽的事,每句话都有一个正整数刺痛值(心理承受力极差)。爱与愁大神想知道连续 m 个刺痛值的和的最小值是多少,但是由于业务繁忙,爱与愁大神只好请你编个程序告诉他。
输入格式
第一行有两个用空格隔开的整数,分别代表 n 和 m。
第 2 到第 (n+1) 行,每行一个整数,第 (i+1) 行的整数ai代表第 i 件事的刺痛值 ai。
输出格式
输出一行一个整数,表示连续 m 个刺痛值的和的最小值是多少。
输入输出样例
输入
8 3
1
4
7
3
1
2
4
3
输出
6
数据规模与约定
对于 30% 的数据,保证 n≤20。
对于 60% 的数据,保证 n≤100。
对于 90% 的数据,保证 n≤10^3。
对于 100% 的数据,保证 0≤m≤n≤3×10^3,1≤ai≤100。
搜索更多相关主题的帖子: 整数 min 输入 数据 int 
8 小时前
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9064
专家分:54351
注 册:2011-1-18
收藏
得分:0 
在你的代码上修改
#include<stdio.h>
int main(){
    int n,m,min=0,ans=300000; // 99999; m≤3×10^3,1≤ai≤100 的话,那最大值不是 3×10^3*100 吗?!
    scanf("%d%d",&n,&m);
    int a[100];
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]); //
    }
    for(int i=0;i<n-m+1;i++){ //

        int t=i;
        min = 0; //
        for( int j=0; j!=m; ++j ){ // while(m--){ 你的 m 还需要使用呐!
            min += a[t];
            t++;
        }
        if(min<ans) ans=min;
    }
    printf("%d",ans);
    return 0;
}


C语言示例
程序代码:
#include <stdio.h>

int main( void )
{
    size_t n, m;
    scanf( "%zu%zu", &n, &m );

    unsigned char m_ring_buf[3000]; // 题目规定 m≤3×10^3,1≤ai≤100

    unsigned sum = 0;
    for( size_t i=0; i!=m; ++i )
    {
        scanf( "%hhu", &m_ring_buf[i] );
        sum += m_ring_buf[i];
    }

    unsigned min_sum = sum;
    for( size_t i=0; i!=n-m; ++i )
    {
        unsigned char t = m_ring_buf[i%m];
        scanf( "%hhu", &m_ring_buf[i%m] );
        sum += m_ring_buf[i%m] - t;
        if( sum < min_sum )
            min_sum = sum;
    }

    printf( "%u", min_sum );
}


C++语言示例
程序代码:
#include <iostream>
#include <algorithm>
#include <ranges>
#include <vector>
using namespace std;

int main( void )
{
    size_t n, m;
    cin >> n >> m;

    auto rs = views::istream<unsigned>(cin)
        | views::take(n)
        | ranges::to<std::vector>()
        | views::slide(m)
        | views::transform( [](auto rgn){ return ranges::fold_left(rgn,0,std::plus{}); } );

    cout << std::ranges::min(rs);
}
本地执行时,数据输入结束后需要多按一个 CTRL+Z / CTRL+D
7 小时前
yiyanxiyin
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:299
专家分:2179
注 册:2023-6-29
收藏
得分:0 
for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }

scanf第二个参数需要传入地址
7 小时前
bug芒果核
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2025-9-12
收藏
得分:0 
回复 2楼 rjsp
太牛了大佬!!!
只要动动手指就能有大佬手把手教你写题,这样的论坛去哪里找!!!
(但其实大佬给的实例我都看不懂

[此贴子已经被作者于2025-9-22 13:55编辑过]

3 小时前
bug芒果核
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2025-9-12
收藏
得分:0 
回复 3楼 yiyanxiyin
大佬(原谅我没啥基础
有些时候(比如指针?)就可以不需要‘&’吗
可以讲解一下吗
辛苦大佬!!!
3 小时前
快速回复:为什么我的代码可以无限输入TaT
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023914 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved