acm书中题目 k-11

    xiaoxiao2021-03-25  83

    题目大概:

    输入n组数据,每组把不同高度的积木,移动至相同高度,求最少需要移动的积木数量。

    思路:

    先开一个无限循环,当n是0时退出,用动态数组存储数据,把所有数据加和求平均,再用每个数减去平均数除2就是最少积木数。

    感想:

    这次运用动态数组,第一次提交,数组越界,我本以为我用动态数组了,另一个用来输入的数组便不用是不是越界了,没想到也是要考虑的。还有就是这个题很细节,在最后输出的数后面还有一个点,我就是没发现这个点提交了很多遍才ac。以后要认真读完输出内容。

    代码:

    #include <iostream> #include <vector> using namespace std; int main() {int n; for(int j=1;;j++) {cin>>n; if(n==0)break; vector<int> a; int b[50],sum=0,k=0,m; for(int i=0;i<n;i++) {cin>>b[i]; sum=sum+b[i]; a.push_back(b[i]); } sum=sum/n; for(int t=0;t<n;t++) {m=a[t]-sum; if(m<0)m=-m; k=k+m; } k=k/2; cout<<"Set #"<<j<<endl; cout<<"The minimum number of moves is "<<k<<"."<<endl<<endl; } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-33960.html

    最新回复(0)