简答题

课程名称:蓝桥C++

题目:密码锁 提示信息: 密码锁:由n 个从左到右并排的圆环组成,每个圆环上都有10 个数字(0~9),蓝色框内为密码显示区,每个圆环在密码显示区只能显示一个数字,如图所示。可以拨动圆环,来改变密码显示区显示的数字。 当密码显示区的数字与密码一致时,密码锁就会被打开。 题目描述: 有一个由n 个圆环组成的密码锁,和一个n 位的密码S(S 由1~9 中的数字(包含1和9)组成)。每次操作只能选择一个或位置连续的多个圆环拨动,当S 中的字符从左到右依次显示在密码显示区时,密码锁会被打开。 已知每个圆环在密码显示区初始数字都为0,请计算出最少需要操作多少次,才能打开密码锁。 注意 1、如果选择了其中一个圆环,可将该圆环中任意一个数字拨动到密码显示区,表示1 次操作; 例如:将第3 个圆环拨动到数字4,表示1 次操作: 2、如果选择了位置连续的多个圆环,只能将这些圆环拨动成同一个数字,显示在密码显示区,表示1 次操作。 例如:将连续的第2 个到第3 个圆环都拨动到数字5,表示1 次操作: 例如: n = 5,S = "12321";分别表示5 个圆环组成的密码锁和密码12321;将5 位密码1、2、3、2、1 从左到右依次显示在密码显示区,以下是操作最少次数的方案: 第一次操作,将5 个初始状态为0 的圆环全部拨动到数字1: 第二次操作,将第2 个到第4 个圆环全部拨动到数字2: 第三次操作,将第3 个圆环拨动到数字3: 最少需要操作3 次,才能打开密码锁。 输入描述: 第一行输入一个整数n(1≤n≤100),表示组成的密码锁的圆环数及密码的位数 第二行输入一个长度为n 的字符串S,S 由1~9 中的数字(包含1 和9)组成,表示密码 输出描述: 输出一个整数,表示最少需要操作多少次,才能打开密码锁 样例输入: 5 12321 样例输出: 3

简答题

课程名称:蓝桥C++

题目:均分糖果 题目描述: 有n 个小朋友站成一排,起初,从左到右每个小朋友分别有a1、a2、a3、...、an 颗糖果。 接下来每一轮老师都会选择一个或多个有糖果的小朋友,他们会将自己的一颗糖果,送给一个与他相邻的小朋友(左边或者右边的小朋友)。 请计算最少需要经过多少轮,才能使所有小朋友的糖果数量都相等?如果做不到,则输出-1。 例1: n = 3,表示有三个小朋友,他们起初的糖果数量分别为1、0、5; 以下是一种最少轮次的情况: 第一轮,选择第三个小朋友,将1 颗糖送给第二个小朋友,之后三个小朋友的糖果数量依次为1、1、4: 1 0 <-- 5 => 1 1 4 第二轮,选择第二个和第三个小朋友,第二个小朋友将1 颗糖送给第一个小朋友,第三个小朋友将1 颗糖给第二个小朋友,之后三个小朋友的糖果数量依次为2、1、3: 1 <-- 1 <-- 4 => 2 1 3 第三轮,选择第三个小朋友,将1 颗糖送给第二个小朋友,之后三个小朋友的糖果数量依次为2、2、2: 2 1 <-- 3 => 2 2 2 最少需要经过3 轮,才能使三个小朋友的糖果数量都相等。 例2: n = 3,表示有三个小朋友,他们起初的糖果数量分别为0、2、0; 无论如何操作,都不可能使三个小朋友的糖果数量都相等,故输出-1。 输入描述: 第一行输入一个整数n(1≤n≤10^4),表示小朋友的人数 第二行输入n 个整数a1,a2,a3、...、an(0≤ai≤10^5),分别表示从左到右每个小朋友起初拥有的糖果数量,整数之间以一个空格隔开 输出描述: 输出一个整数,表示至少需要经过多少轮,才能使所有小朋友的糖果数量都相等;如果做不到,则输出-1 样例输入: 3 1 0 5 样例输出: 3