CSDN 分糖果算法的思路和求助
昨天晚上 在csdn上做了一道分糖果的题目,我自个测的是没有问题,但是提交答案后,老失败,提示
你的程序正常运行并输出了结果,但是答案错误
你的程序输出结果与测试数据中的输出结果不符
我先把自个思路说一下,再把我的代码贴出来,你们帮忙看看,哪里出了问题,或者有更好的思路分享下。
题目是这样的:地址:http://student.csdn.net/mcs/programming_challenges 第二道题目
有n个小朋友站成一排(编号从0到n-1),每个小朋友有一个rating值,存放在ratings数组中。老师需要给他们分配糖果,每个小朋友至少需要一颗糖果,对于任意相邻的两个小朋友i和i+1,rating值大的必须比rating值小的分配的糖果多(rating相同的没必要分配一样多的糖果)。
请计算最少需要多少颗糖果,才能完成上述分配。
输入格式:
多组数据,每组数据第一行是一个正整数n。
接下来n行,每行有1个正整数,表示每个小朋友的rating值。所有整数都不超过100000。
输出格式:
每组数据一行,包括一个正整数,表示做少需要的糖果数。
我的思路是 从0开始遍历小朋友,每一次求出当前小朋友可以拿到的最少糖果数,每一次比对前后位置;
前面的位置比对一次就可以了,若大于前面小朋友的rating值,则当前应该得到的糖果数为上一位小朋友得到的糖果数+1,若小于等于前面小朋友的rating值,则自动将应得糖果数变为1;
设置往后比对应得糖果数为1的临时变量,然后开始往后面比对,如果后面小朋友的rating值,小于当前小朋友的rating值,则当前小朋友应得糖果数的临时变量+1,继续比对后面小朋友,如果是递减,则不断+1,直到递减结束;
比对该临时变量和往前比对应得糖果数,取二者的最大值,即为当前小朋友应得最少糖果数。
这样求出每次小朋友应得最少糖果数,依次相加即可得到最少糖果数。
具体代码如下:
static void Main(string[] args)
{
Console.WriteLine("输入n跳出循环,或者其他字符开始游戏");
while (Console.ReadLine() != "n")
{
GetMin();
Console.WriteLine("输入n跳出循环,或者其他字符继续游戏");
} }
static void GetMin()
{
// Console.WriteLine("请输入整数"); string input = Console.ReadLine();
int inputNum;
while (!int.TryParse(input, out inputNum))
{
// Console.WriteLine("请输入整数");
input = Console.ReadLine();
}
if (inputNum == )
{
Console.WriteLine("");
return;
} int[] arys = new int[inputNum];
//Random rm=new Random();
//for (int i = 0; i < inputNum; i++)
//{
// arys[i] = rm.Next(1, 15);
// Console.Write(arys[i]+" ");
//}
//Console.WriteLine(); int tmp;
for (int i = ; i < inputNum; i++)
{
input = Console.ReadLine();
while (!int.TryParse(input, out tmp) || tmp > || tmp <= )
{
Console.WriteLine("请输入不超过100000的正整数");
input = Console.ReadLine();
}
arys[i] = tmp;
} int sum = ;
int num = ;
int j;
//遍历每个小朋友
for (int i = ; i < arys.Length; i++)
{
j = i;
//往前比对 求出应得最少糖果数
if (j >= && arys[j] > arys[j - ])
{
num++;
}
else
{
num = ;
}
//开始往后比对,求出往后比对应得最少糖果数
int next = ;
while (j < arys.Length - && arys[j] > arys[j + ])
{
j++;
next++;
}
//比对 往前比对和往后比对的结果 取二者中最大值 作为应得最少糖果数
num = num > next ? num : next;
//Console.WriteLine("num:" + num);
sum += num;
}
Console.WriteLine("最少应得糖果数" + sum);
}
CSDN 分糖果算法的思路和求助的更多相关文章
- 牛客 2018NOIP 模你赛2 T2 分糖果 解题报告
分糖果 链接:https://www.nowcoder.com/acm/contest/173/B 来源:牛客网 题目描述 \(N\) 个小朋友围成一圈,你有无穷个糖果,想把其中一些分给他们. 从某个 ...
- 使用OC语言编写两个超大数相乘或相加的算法的思路和超大正整数相乘的代码
正文: 在编程中,无论是OC还是C亦或是C++语言,所声明的整数变量都会在内存中占有固定的存储空间,而这些存储空间都是固定的. 比如我们知道的int.long.short.unsigend int.u ...
- hunnu11543:小明的烦恼——分糖果
Problem description 小明在班里一直是个非常公正的孩子.这点同学和老师都非常清楚,这不,老师每周都会从家里带来一些糖果.然后叫小明把糖果分给其它小朋友,但这个班里的同学都有一个非 ...
- [LeetCode] Candy (分糖果),时间复杂度O(n),空间复杂度为O(1),且只需遍历一次的实现
[LeetCode] Candy (分糖果),时间复杂度O(n),空间复杂度为O(1),且只需遍历一次的实现 原题: There are N children standing in a line. ...
- C语言 · 分糖果
历届试题 分糖果 时间限制:1.0s 内存限制:256.0MB 问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一 ...
- 蓝桥杯 历届试题 PREV-32 分糖果
历届试题 分糖果 时间限制:1.0s 内存限制:256.0MB 问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边 ...
- 51nod——1402最大值、2479小b分糖果 (套路)
1402最大值:正向从1到n,如果没有限制,就依次递增1,如果有限制,就取那个限制和递增到这的最小值.这样保证1和每个限制点后面都是符合题意的递增,但是限制点前面这个位置可能会有落差(之前递增多了). ...
- 58同城笔试题:数组去重;分饼干(分糖果);最小路径和(leetcode64)
1. 数组去重 题目描述 /** * 有序数组去重 * 输出最终的数字个数 * 输入:1,2,2 * 输出:2 * @author Turing * */ 代码 import java.util.*; ...
- HNUSTOJ-1639 分糖果(几何)
1639: 分糖果 时间限制: 1 Sec 内存限制: 128 MB提交: 261 解决: 118[提交][状态][讨论版] 题目描述 为了实验室的发展,吴大大采购了一箱零食O(∩_∩)O~~ 在 ...
随机推荐
- 多媒体(4):JPEG图像压缩编码
(重要的事放前面)此JPEG的C++实现见 https://github.com/chencjGene/SoftEngineering/tree/master/JPEG 目录 多媒体(1):MCI接口 ...
- 开源GIS简介.学习
开发者都希望自己的软件能够运行在尽可能多的计算机上.然而事与愿违,摆在 GIS开发者面前的仍然是对峙的平台.J2EE随着Java5.0的发布,已经正式更名为JavaEE,而微软也正式发布了.NET2. ...
- hdu 3667 拆边加最小费用流
Transportation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- iOS响应者链和事件传递机制
原文来自:http://www.cnblogs.com/zhw511006/p/3517248.html 响应者链(Responder Chain) 通常,一个iOS应用中,在一块屏幕上通常有很多的U ...
- gradle教程 [原创](eclipse/ADT下 非插件 非Android Studio/AS)纯手打 第一篇:安装配置gradle
一个bug 一个脚印的叫你们用gradle. 1介于网络上的很多资料都是老的 不适用与现在的新版本gradle 尤其是有些gradle方法改名了老的用不了 2介于网上都是粘贴复制并且零碎我很蛋疼啊,走 ...
- DOS批量递归删除文件夹
@echo off for /d /r E:\test01\ %%i in (test) do rd /s /q "%%i" pause
- X Window 设定介绍
在 Unix Like 上面的图形用户接口 (GUI) 被称为 X 或 X11 X11 是一个『软件』而不是一个操作系统: X11 是利用网络架构来进行图形接口的执行与绘制: 最著名的 X 版本为 X ...
- [转载]Altium规则详解及设置
在Altium中进行PCB的设计时,经常会使用规则(Rule)来进行限定以确定线宽孔径等参数,此文将简要的介绍规则中的一些标量代表了什么. Electrical——电气规则.安全间距,线网连接等 Ro ...
- poj 2060 Taxi Cab Scheme (二分匹配)
Taxi Cab Scheme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5710 Accepted: 2393 D ...
- python之优雅处理套接字错误
#!/usr/local/bin/python3.5 #coding:utf-8 import sys import socket import argparse def main(): #setup ...