poj 3424 Better security

poj 3424 Better security,第1张

poj 3424 Better security
#include<cstdio>#include<set>#include<string>#include<algorithm>using namespace std;set<string> s;set<string>::iterator it;bool check(int x, int y) //判断是否落入窗口{    if(x >= 0 && x < 300 && y >= 0 && y < 300) return true;    else return false;}void solve(int n, int x1, int y1, int x2, int y2, int p[][2]){    char ret[110];    ret[n] = '';    int i, j, k, dx, dy;    for(i = x2 - 300; i <= x1 + 300; i++) //注意坐标原点的范围    {        for(j = y2 - 300; j <= y1 + 300; j++)        { bool flag = true; for(k = 0; k < n; k++) {     dx = p[k][0] - i;     dy = p[k][1] - j;     if(!check(dx, dy)) { flag = false; break; }     ret[k] = '1' + dx / 100 + dy / 100 * 3; } if(flag) s.insert(string(ret));        }    }}int main(){    int n;    int x1, x2, y1, y2;    int p[101][2];    while(scanf("%d",&n) != EOF)    {          s.clear();          x1 = y1 = 999999;          x2 = y2 = -999999;          for(int i = 0; i < n; i++)          {   scanf("%d%d",&p[i][0],&p[i][1]);   p[i][1] = -p[i][1]; //纵坐标取反   x1 = min(x1, p[i][0]);   y1 = min(y1, p[i][1]);   x2 = max(x2, p[i][0]);   y2 = max(y2, p[i][1]);          }          solve(n, x1, y1, x2, y2, p);          if(s.size() == 0) { puts("NONEn"); continue;}          for(it = s.begin(); it != s.end(); it++)   printf("%sn",it->c_str());    }    return 0;}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4924847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存