zoukankan      html  css  js  c++  java
  • 均分纸牌pascal程序

    题意

    有n堆纸牌,通过把牌移到另一堆,使每一堆的纸牌数相等。


    分析

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


    const
    maxn=100;
    var
    a:array[0..maxn]of longint;
    p,n,i,step:longint;
    procedure init;
    var
    i:longint;
    begin
        readln(n);
        for i:=1 to n do
        begin
            read(a[i]);
            p:=p+a[i];
        end;
        p:=p div n;
        step:=0;
    end;


    procedure fs;
    var
    k,i,j:longint;
    begin
        for k:=1 to n do
        a[k]:=a[k]-p;
        i:=1;j:=n;
        while (a[i]=0)and(i<n) do inc(i);
        while (a[j]=0)and(j>1) do dec(j);
        while (i<j) do
        begin
            a[i+1]:=a[i]+a[i+1];
            a[i]:=0;
            inc(step);
            inc(i);
            while (a[i]=0)and(i<j) do inc(i);
        end;
    end;
    begin
        init;
        fs;
        write(step);
    end.


  • 相关阅读:
    C语言文法分析
    词法分析--编程感想
    词法分析(改)
    0916词法分析
    0909关于编译
    python正则表达式
    python除法运算
    python值相等和对象相同
    Java编写程序时要考虑到所有可能的异常
    hadoop 读取文件操作
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9500221.html
Copyright © 2011-2022 走看看