想不通为什么错误,自己用笔算了几组数据,再通过程序测试还是正确的(虽然测试数据没有太大),所以求路过的大神指点一下。
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; }
错误提示:
原文地址:http://blog.csdn.net/liuchang54/article/details/44853951