zoukankan      html  css  js  c++  java
  • CODE[VS] 1098 均分纸牌

    题目描述 Description

    有 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)。

    输入描述 Input Description

    第一行N(N 堆纸牌,1 <= N <= 100)
    第二行A1 A2 … An (N 堆纸牌,每堆纸牌初始数,l<= Ai <=10000)

    输出描述 Output Description

    输出至屏幕。格式为:
    所有堆均达到相等时的最少移动次数。‘

    样例输入 Sample Input

    4
    9 8 17 6

    样例输出 Sample Output

    3

    数据范围及提示 Data Size & Hint

    e


    这个题刚拿到想了很多,包括递归一系列的,但是最后提交了几次突然发现自己想的有点多,其实这个题完全可以从左向右遍历,试想1 1 7三个数,我们要做的就是将7移向第二个1中4然后再由加4变成的5给第一个1一个2最后都成为3,我们会发现,如果这个题从左向右思考的话,就是第一个1为了变成3,需要从第二个数借2,然而第二个数不足2,但是我们没有必要再从7借,因为反向思维我们可以从7直接借给第二个数很大的一个数,所以我们选择透支第二个数,即从第二个数中借2给第一个数然后变成-1,再从7中给-1还.

    代码:
    /*************************************************************************
        > File Name: 均分纸牌.cpp
        > Author: zhanghaoran
        > Mail: chilumanxi@gmail.com 
        > Created Time: 2015年06月19日 星期五 20时44分52秒
     ************************************************************************/
    
    #include <iostream>
    #include <algorithm>
    #include <utility>
    
    using namespace std;
    
    int N;
    int a[101];
    
    int main(void){
    	int sum = 0;
    	int ans = 0;
    	cin >> N;
    	for(int i = 0; i < N; i ++){
    		cin >> a[i];
    		sum += a[i];
    	}
    	sum = sum / N;
    	for(int i = 0; i < N - 1; i ++){
    		if(a[i] != sum){
    			a[i + 1] += a[i] - sum;
    			ans ++;
    		}
    	}
    	cout << ans << endl;
    	return 0;
    }


  • 相关阅读:
    关于Maya Viewport 2.0 API 开发的介绍视频
    春节大假
    Some tips about the life cycle of Maya thread pool
    Can I compile and run Dx11Shader for Maya 2015 on my side?
    How to get current deformed vertex positions in MoBu?
    想加入全球首届的 欧特克云加速计划吗?
    三本毕业(非科班),四次阿里巴巴面试,终拿 offer(大厂面经)
    mac、window版编辑器 webstorm 2016... 永久破解方法。
    node 搭载本地代理,处理web本地开发跨域问题
    js 一维数组,转成嵌套数组
  • 原文地址:https://www.cnblogs.com/chilumanxi/p/5136128.html
Copyright © 2011-2022 走看看