想不通为什么错误,自己用笔算了几组数据,再通过程序测试还是正确的(虽然测试数据没有太大),所以求路过的大神指点一下。
题目描述
YT大学定于5月16日举行校运动会。学校有 n 个系。组委会要求每个系有 m 个运动员参加开幕式,并且每个系的 m 个运动员站成一队。我们假设 n*m
名运动员站成一个n行m列的队列,表示为Anm:下图中的每一行代表一个系。
a11 a12 a13 … a1m
a21 a22 a23 … a2m
…
…
…
……
an1 an2 an3 … anm
现组委会要求每系在 m 个运动员中选出一名旗手站在本系的前面,为了视觉上的美观,要求相邻的旗手身高差距尽可能的小,形成一个完美旗手队列。比如我们从上述队列中选择出{a12,
a24, a33, … , ank}作为旗手队列。则这n个人的身高差最小的队列是完美旗手队列。比如有4个系,各系选择的旗手分别为a,b,
c, d, 则 val=|a-b|+|b-c|+|c-d|
最小的选择为完美旗手队列。你能帮YT大学选择完美旗手队列吗?
输入
多个测试样例,每个测试样例第一行为两个整数n, m (1 <= n, m <= 1000)
,接着是n行整数数列,表示原始的队列,整数值表示运动员的身高(<=10000)。
输出
对于每一个测试样例,输出最小的val值。
样例输入
3 32 3 14 7 67 9 2
样例输出
3
提示
旗手的身高是3, 4和2。
我的代码:
#include <iostream> #include <cmath> #define MAXN 1000 using namespace std; int a[MAXN][MAXN]; int Val[MAXN]; int main() { int N,M; int min=100000000; cin>>N>>M; for (int i=0;i<N;i++) Val[i]=0; for (int i=0; i<N; i++) for (int j=0; j<M; j++) cin>>a[i][j]; for (int i=0; i<N; i++) { for (int j=0; j<M-1; j++) { Val[i]+=(fabs(a[i][j]-a[i][j+1])); } } for (int i=0; i<N; i++) { if (Val[i]<min) min=Val[i]; } cout<<min; return 0; }
错误提示:
时间: 2024-11-02 11:44:10