杭电ACM2015

来源:互联网 发布:淘宝上警服叫什么 编辑:程序博客网 时间:2024/05/16 11:21

题目的链接就不放上来了,自己去找

这一道题一上来之后,我的想法是:

需要先定义一个数组(然而我一上来定义成了一个浮点型的数组,后面定义a[n]时是按照整数走的。。。。。),

然先判断n\m,也就是说,每m个输出一个平均值可以输出多少次

在每一次计算

#include<stdio.h>int main(){    int n,m;    while(scanf("%d%d",&n,&m)!=EOF){int i=0,sum=0;int a[100];a[0]=2;    int b=n/m,c=1,d=n%m;    for(c=1;c<=b;c++)    {     for (i=0;i<m;i++)        {            sum+=a[i];            a[i+1]=a[i]+2;        }        printf("%d",sum/m);        a[0]=a[i];        sum=0;        if (c<b)            printf(" ");    }    if(n%m!=0)    {        int sum2=0;    for (i=0;i<(n%m);i++)    {        sum2+=a[i];        a[i+1]=a[i]+2;    }       printf(" %d",sum2/(n%m));    }printf("\n");}return 0;}

平均值的过程中,有一个很麻烦的问题,就是:每一次结尾之后i都不一样,而且无法给i在循环开始时定义成一个变量。。。。。。

解决的方法就是,把每一次循环的i给更新成0,每一次循环都重新从0开始,这个思路以后都可以借鉴。

我一开始在前面把数组初始化了,但是后来才发现这样做的问题,就在于,后面我们每一次都对i进行更新,所以在一开始就按照递增顺序这样把数组给定义了的话,后面会出问题(至于为什么嘛,等我调试一下程序)

所以这道题最困扰我的问题就是:

如何在每一次输出平均值的小循环里定义循环的初始值?

另外,除了把每一次的i都更新,从0重新开始之外,可不可以直接按照递增的顺序走?

对然可能有点麻烦。

代码附上

原创粉丝点击