您的位置:首页 > 其它

PAT乙级1068

2018-04-03 23:04 155 查看
快快快趁着熄灯之前把博客发出来
首先贴题目链接点击打开链接
然后上代码【我突然意识到我有个不写注释的坏习惯......以后要改!】#include<iostream>
#include<vector>
#include<map>
#include<math.h>
using namespace std;
class message{
public:
int count;
int n;
int m;
message(){
count=0;
n=0;
m=0;
}
};
vector< vector<int> > colors;
int tol,m,n;
int test(int n_,int m_){
int temp=colors[n_][m_];
int count=0;
if(n_-1>=0&&abs(colors[n_-1][m_]-temp)>tol||n_-1<0){
if(n_+1<n&&abs(colors[n_+1][m_]-temp)>tol||n_+1>=n){
if(m_-1>=0&&abs(colors[n_][m_-1]-temp)>tol||m_-1<0){
if(m_+1<m&&abs(colors[n_][m_+1]-temp)>tol||m_+1>=n){
if(n_-1>=0&&m_-1>=0&&abs(colors[n_-1][m_-1]-temp)>tol||n_-1<0||m_-1<0){
if(m_+1<m&&n_-1>=0&&abs(colors[n_-1][m_+1]-temp)>tol||n_-1<0||m_+1>=n){
if(n_+1<n&&m_-1>=0&&abs(colors[n_+1][m_-1]-temp)>tol||n_+1>=n||m_-1<0){
if(m_+1<m&&n_+1<n&&abs(colors[n_+1][m_+1]-temp)>tol||n_+1>=n||m_+1>=n){
return 1;
}
}
}
}
}
}
}
}

return 0;
}
int main(){

scanf("%d%d%d",&m,&n,&tol);
map<int,message> records;
for(int i=0;i<n;i++){
vector<int> temp;
for(int j=0;j<m;j++){
int tempcolor;
scanf("%d",&tempcolor);
temp.push_back(tempcolor);
if(records[tempcolor].count<=1){
records[tempcolor].count++;
records[tempcolor].n=i;
records[tempcolor].m=j;
}
}
colors.push_back(temp);
}

map<int,message>::iterator iter=records.begin(),iter1;
while(iter!=records.end()){
if(((iter->second).count>1)||test((iter->second).n,(iter->second).m)==0){
iter1=iter;
iter++;
records.erase(iter1);//
}
else{
iter++;
}
}
iter=records.begin();
if(records.size()>1){
cout<<"Not Unique";
}
else if(records.size()==0){
cout<<"Not Exist";
}
else{
printf("(%d, %d): %d",(iter->second).m+1,(iter->second).n+1,iter->first);
}

return 0;
}
这个题目不难,刷着当练手,过程中还是遇到了一些问题,总结如下。
首先是erasemap的一个靠谱方法,就是建立两个iterator然后倒一下,不然erase返回的是空,用来删除的iterator会失效的。
然后就是很坑的一点,一定要检查自己的格式和样例给的格式是不是一致,比如本题样例里有两个空格,但是题目中没有文字强调,很容易忽略。
最后是更坑的一点,题目描述不确切!没有说边界独一无二的点怎么处理,统一描述成了八个相邻像素......也没有举出对应的实例。好在好像pat是实时回显分数的,这要是csp就惨了......
还有就是,再看一遍题面,发现tab键在输入的时候和空格键是一样的啊哈哈~都可以做输入的分界~
总的来讲还是比较轻松的一道题,再给自己强调一遍~~~以后要记得加注释~~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: