| ||||||||||
Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
1009问题 为什么样例我输出全是对的 就是W/A 哪位大神来帮我看一下!???#include <iostream> #include <map> using namespace std; int width, height;//图像宽度,高度 int pairs[1000][2];//数据数组 int row; //数据行数 int Compute_Value(int num) { for(int i = row - 1; i >= 0; i--) if(num >= pairs[i][0]) return pairs[i][1]; } int Compute_EDV(int x, int y) { int max = 0; int abstract = Compute_Value(y * width + x); int temp; for(int i = x - 1; i <= x + 1; i++) { for(int j = y - 1; j <= y + 1; j++) { if(i >= 0 && i <= width - 1 && j >= 0 && j <= height - 1 && (i != x || j != y)) { temp = Compute_Value(j * width + i) - abstract; if(temp < 0) temp = -temp; if(temp > max) max = temp; } } } return max; } int main() { int pair_value, pair_num;//数据 int num_allpixels;//元素总个数 map<int, int> EDV; while(cin >> width) { if(!width) { cout << "0" << endl; break; } num_allpixels = 0; row = 0; while(cin >> pair_value >> pair_num) { if(!pair_value && !pair_num) break; pairs[row][0] = num_allpixels; pairs[row][1] = pair_value; num_allpixels += pair_num; ++row; } //开始 cout << width << endl; height = num_allpixels / width;//计算图像高度 for(int i = 0; i < row; i++) { int x = pairs[i][0] % width;//x坐标从0~width-1 int y = pairs[i][0] / width;//y坐标从0~height-1 for(int j = x - 1; j <= x + 1; j++) { for(int k = y - 1; k <= y + 1; k++) { if(j >= 0 && j <= width - 1 && k >= 0 && k <= height - 1) EDV.insert(make_pair(k * width + j, Compute_EDV(j, k))); } } } map<int, int>::const_iterator iter_EDV = EDV.begin(); map<int, int>::const_iterator iter2_EDV = EDV.begin(); while(iter_EDV != EDV.end()) { ++iter2_EDV; while(iter2_EDV != EDV.end() && iter2_EDV->second == iter_EDV->second) ++iter2_EDV; if(iter2_EDV == EDV.end()) break; cout << iter_EDV->second << " " << iter2_EDV->first - iter_EDV->first << endl; iter_EDV = iter2_EDV; } cout << iter_EDV->second << " " << num_allpixels - iter_EDV->first << endl; //结束 cout << "0 0" << endl; EDV.clear(); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator