题解 | #塔#(不理解,请留下评论,必回)

http://www.nowcoder.com/practice/54868056c5664586b121d9098d008719

最简单逻辑求解

每走一步,最高-1,最矮+1,k步之后的数组是结果。
--------------------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
    int n, k, tmp, s = 0, m;
    scanf("%d %d", &n, &k);
    int sz[n], szk[k][2];
    for (int i = 0; i < n; i++) {
        scanf("%d", &sz[i]);
    }
    for (int j = 0; j <= k; j++) {
        int max = sz[0], min = sz[0], maxi = 0, mini = 0;
        for (int i = 1; i < n; i++) {
            if (max < sz[i]) { max = sz[i]; maxi = i; }
            if (min > sz[i]) { min = sz[i]; mini = i; }

        }
        m = max - min;
        if (sz[maxi] == sz[mini]) { break; }
        if (sz[maxi] - sz[mini] == 1) { break; }
        szk[j][0] = maxi;
        szk[j][1] = mini;
        sz[maxi]--;
        sz[mini]++;
        s++;
    }
    if (s > k) { s--; }
    
    printf("%d %d\n", m, s);
    for (int i = 0; i <s; i++) {
        printf("%d %d\n", szk[i][0] + 1, szk[i][1] + 1);

    }
}

全部评论

相关推荐

01-19 12:48
门头沟学院 C++
只想搞钱的鸽子很喜欢...:混账是很多的,还有那些在自己风华正茂的年纪说风凉话讥讽那些下岗前员工的。这些人都是现在职场环境这么烂的帮凶
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务