• 均分纸牌


    题目描述

    有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若干张纸牌,然后移动。

    移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。

    现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。

    例如 N=4,4 堆纸牌数分别为:

    ①9②8③17④6

    移动3次可达到目的:

    从 ③ 取 4 张牌放到 ④ (9 8 13 10) -> 从 ③ 取 3 张牌放到 ②(9 11 10 10)-> 从 ② 取 1 张牌放到①(10 10 10 10)。

    输入输出格式

    输入格式:

    键盘输入文件名。文件格式:

    N(N 堆纸牌,1 <= N <= 100)

    A1 A2 … An (N 堆纸牌,每堆纸牌初始数,l<= Ai <=10000)

    输出格式:

    输出至屏幕。格式为:

    所有堆均达到相等时的最少移动次数。

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int a,n[1005],b,c,d,t,cnt;
    int main()
    {
    	cin>>a;
    	for(b=1;b<=a;b++)
    	{
    		cin>>n[b];
    		c=c+n[b];
    	}
    	c=c/a;
    	for(b=1;b<=a/2;b++)
    	{
    		if(n[b]!=c)
    		{
    			t=c-n[b];
    			n[b+1]=n[b+1]-t;
    			cnt++;
    		}
    		if(n[a-b+1]!=c)
    		{
    			t=c-n[a-b+1];
    			n[a-b]=n[a-b]-t;
    			cnt++;
    		}
    	}
    	cout<<cnt;
    }


  • 相关阅读:
    Codeforces 1265A Beautiful String
    1039 Course List for Student (25)
    1038 Recover the Smallest Number (30)
    1037 Magic Coupon (25)
    1024 Palindromic Number (25)
    1051 Pop Sequence (25)
    1019 General Palindromic Number (20)
    1031 Hello World for U (20)
    1012 The Best Rank (25)
    1011 World Cup Betting (20)
  • 原文地址:https://www.cnblogs.com/ztz11/p/9190011.html
Copyright © 2020-2023  润新知