java数组和算法的问题
问题描述在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。第一天,每个商店都自己定了一个价格。店主们希望自己的菜价和其他商店的一致,第二天,每一家...
问题描述
在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。
第一天,每个商店都自己定了一个价格。店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商店的价格调整自己的价格。具体的,每家商店都会将第二天的菜价设置为自己和相邻商店第一天菜价的平均值(用去尾法取整)。
注意,编号为1的商店只有一个相邻的商店2,编号为n的商店只有一个相邻的商店n-1,其他编号为i的商店有两个相邻的商店i-1和i+1。
给定第一天各个商店的菜价,请计算第二天每个商店的菜价。
输入格式
输入的第一行包含一个整数n,表示商店的数量。
第二行包含n个整数,依次表示每个商店第一天的菜价。
输出格式
输出一行,包含n个正整数,依次表示每个商店第二天的菜价。
样例输入
8
4 1 3 1 6 5 17 9
样例输出
2 2 1 3 4 9 10 13
数据规模和约定
对于所有评测用例,2 ≤ n ≤ 1000,第一天每个商店的菜价为不超过10000的正整数。 展开
在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。
第一天,每个商店都自己定了一个价格。店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商店的价格调整自己的价格。具体的,每家商店都会将第二天的菜价设置为自己和相邻商店第一天菜价的平均值(用去尾法取整)。
注意,编号为1的商店只有一个相邻的商店2,编号为n的商店只有一个相邻的商店n-1,其他编号为i的商店有两个相邻的商店i-1和i+1。
给定第一天各个商店的菜价,请计算第二天每个商店的菜价。
输入格式
输入的第一行包含一个整数n,表示商店的数量。
第二行包含n个整数,依次表示每个商店第一天的菜价。
输出格式
输出一行,包含n个正整数,依次表示每个商店第二天的菜价。
样例输入
8
4 1 3 1 6 5 17 9
样例输出
2 2 1 3 4 9 10 13
数据规模和约定
对于所有评测用例,2 ≤ n ≤ 1000,第一天每个商店的菜价为不超过10000的正整数。 展开
3个回答
2018-11-20 · 百度知道合伙人官方认证企业
关注
展开全部
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入商店数量:");
int n = 0;
boolean pass = false;
while (!pass) {
n = Integer.parseInt(sc.nextLine());
if (n < 2 || n > 1000) {
System.out.println("超出范围:2 ≤ n ≤ 1000,请重新输入");
} else {
pass = true;
}
}
System.out.println("请输入各个店铺价格:");
int[] price = new int[n]; // 第一天价格
pass = false;
while (!pass) {
String str = sc.nextLine();
String[] arr = str.split(" ");
if (arr.length != n) {
System.out.println("输入价格数量与店铺数量不一致,请重新输入价格:");
} else {
for (int i = 0; i < n; i++) {
try {
price[i] = Integer.parseInt(arr[i]);
pass = true;
} catch (Exception e) {
System.out.println("输入格式错误,请重新输入价格");
}
}
}
}
int[] newPrice = new int[n]; // 第二天价格
for (int i = 0; i < n; i++) {
int avg;
if (i == 0) {
avg = (price[i] + price[i + 1]) / 2;
} else if (i == n - 1) {
avg = (price[i - 1] + price[i]) / 2;
} else {
avg = (price[i - 1] + price[i] + price[i + 1]) / 3;
}
newPrice[i] = avg;
}
// 输出
System.out.println(n);
for (int i = 0; i < n; i++) {
System.out.print(newPrice[i] + "\t");
}
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入商店数量:");
int n = 0;
boolean pass = false;
while (!pass) {
n = Integer.parseInt(sc.nextLine());
if (n < 2 || n > 1000) {
System.out.println("超出范围:2 ≤ n ≤ 1000,请重新输入");
} else {
pass = true;
}
}
System.out.println("请输入各个店铺价格:");
int[] price = new int[n]; // 第一天价格
pass = false;
while (!pass) {
String str = sc.nextLine();
String[] arr = str.split(" ");
if (arr.length != n) {
System.out.println("输入价格数量与店铺数量不一致,请重新输入价格:");
} else {
for (int i = 0; i < n; i++) {
try {
price[i] = Integer.parseInt(arr[i]);
pass = true;
} catch (Exception e) {
System.out.println("输入格式错误,请重新输入价格");
}
}
}
}
int[] newPrice = new int[n]; // 第二天价格
for (int i = 0; i < n; i++) {
int avg;
if (i == 0) {
avg = (price[i] + price[i + 1]) / 2;
} else if (i == n - 1) {
avg = (price[i - 1] + price[i]) / 2;
} else {
avg = (price[i - 1] + price[i] + price[i + 1]) / 3;
}
newPrice[i] = avg;
}
// 输出
System.out.println(n);
for (int i = 0; i < n; i++) {
System.out.print(newPrice[i] + "\t");
}
}
}
展开全部
实现代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入商店数量:");
int n = 0;
boolean pass = false;
while (!pass) {
n = Integer.parseInt(sc.nextLine());
if (n < 2 || n > 1000) {
System.out.println("超出范围:2 ≤ n ≤ 1000,请重新输入");
} else {
pass = true;
}
}
System.out.println("请输入各个店铺价格:");
int[] price = new int[n]; // 第一天价格
pass = false;
while (!pass) {
String str = sc.nextLine();
String[] arr = str.split(" ");
if (arr.length != n) {
System.out.println("输入价格数量与店铺数量不一致,请重新输入价格:");
} else {
for (int i = 0; i < n; i++) {
try {
price[i] = Integer.parseInt(arr[i]);
pass = true;
} catch (Exception e) {
System.out.println("输入格式错误,请重新输入价格");
}
}
}
}
int[] newPrice = new int[n]; // 第二天价格
for (int i = 0; i < n; i++) {
int avg;
if (i == 0) {
avg = (price[i] + price[i + 1]) / 2;
} else if (i == n - 1) {
avg = (price[i - 1] + price[i]) / 2;
} else {
avg = (price[i - 1] + price[i] + price[i + 1]) / 3;
}
newPrice[i] = avg;
}
// 输出
System.out.println(n);
for (int i = 0; i < n; i++) {
System.out.print(newPrice[i] + "\t");
}
}
}
更多追问追答
追问
运行后一直显示数量不一致怎么办,大佬求助
追答
不应该呀,我运行是正常的,看你输入的是不是有问题,价格之间是空格
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
运行过了,是正确的,就是浮点型转整型的时候会把小数部分省掉。-----善知教育
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询