| ||||||||||
| 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