此程序为次品.......

#include <stdio.h>

#include <stdlib.h>

#define MAX_SIZE (100000)

int list[500][500];

int total;

int n,m,Q,vir[10000],type[10000];

struct stackrecord

{

int row;

int col;

struct stackrecord *next;

};

typedef struct stackrecord *stack;

stack s;

typedef stack nodeplace;

void mkempty()

{

s=(stack)malloc(sizeof(nodeplace));

s->next=NULL;

}

void push(int row,int col)

{

nodeplace temp,p,top;

temp=(stack)malloc(sizeof(nodeplace));

temp->row=row;

temp->col=col;

top=s->next;

p=s;

while(top!=NULL&&list[top->row][top->col]<list[row][col])

{

p=top;

top=top->next;

}

p->next=temp;

temp->next=top;

total++;

vir[list[row][col]]++;

}

void insertion(nodeplace p,int row,int col)

{

nodeplace temp;

list[row][col]=list[p->row][p->col];

temp=(stack)malloc(sizeof(nodeplace));

temp->row=row;

temp->col=col;

temp->next=p->next;

p->next=temp;

vir[list[row][col]]++;

total++;

}

int check(nodeplace p)

{

if((p->row==0||p->row>0&&list[p->row-1][p->col]>0)

&&(p->row==m-1||p->row<m-1&&list[p->row+1][p->col]>0)

&&(p->col==0||p->col>0&&list[p->row][p->col-1]>0)

&&(p->col==n-1||p->col<n-1&&list[p->row][p->col+1]>0))

return 1;

return 0;

}

void search()

{

int min;

int day=1;

nodeplace p,pt;

while(total<m*n)

{

min=MAX_SIZE;

p=s->next;

pt=s;

while(p!=NULL)

{

if(p->row>0&&list[p->row-1][p->col]<0)

if(list[p->row-1][p->col]+day>=0)

insertion(p,p->row-1,p->col);

else

if(-list[p->row-1][p->col]-day<min)

min=-list[p->row-1][p->col]-day;

if(p->row<m-1&&list[p->row+1][p->col]<0)

if(list[p->row+1][p->col]+day>=0)

insertion(p,p->row+1,p->col);

else

if(-list[p->row+1][p->col]-day<min)

min=-list[p->row+1][p->col]-day;

if(p->col>0&&list[p->row][p->col-1]<0)

if(list[p->row][p->col-1]+day>=0)

insertion(p,p->row,p->col-1);

else

if(-list[p->row][p->col-1]-day<min)

min=-list[p->row][p->col-1]-day;

if(p->col<n-1&&list[p->row][p->col+1]<0)

if(list[p->row][p->col+1]+day>=0)

insertion(p,p->row,p->col+1);

else

if(-list[p->row][p->col+1]-day<min)

min=-list[p->row][p->col+1]-day;

if(check(p))

pt->next=p->next;

else

pt=p;

p=p->next;

}

day+=min;

}

}

int main()

{

int times=0;

int i,j;

freopen("data.txt","r",stdin);

scanf("%d%d",&m,&n);

while(m!=0&&n!=0)

{

/*预处理*/

total=0;

times++;

mkempty();

for(i=0;i<500;i++)

for(j=0;j<500;j++)

list[i][j]=0;

for(i=0;i<1000;i++)

{

vir[i]=0;

type[i]=0;

}

/*输入*/

for(i=0;i<m;i++)

for(j=0;j<n;j++)

{

scanf("%d",&list[i][j]);

if(list[i][j]>0)

push(i,j);

}

scanf("%d",&Q);

for(i=0;i<Q;i++)

scanf("%d",&type[i]);

search();/*搜索*/

/*输出*/

printf("Scenario #%d\n",times);

for(i=0;i<Q;i++)

printf("%d\n",vir[type[i]]);

scanf("%d%d",&m,&n);

if(m!=0&&n!=0)

printf("\n");

}

fclose(stdin);

return 0;

}

转载于:https://www.cnblogs.com/chuxiking/archive/2011/01/11/1932922.html

project-attact of panda virus相关推荐

  1. ZOJ 2849 Attack of Panda Virus (优先队列 priority_queue)

    优先队列,据说标程是并查集,没思路.貌似优先队列都是直接用stl写的,又逼我用stl了.prioriry_queue不熟. ps: value值越小,优先级越高.所以重载 < 运算符时按优先级从 ...

  2. 熊猫浏览器panda发布了!Enjoy it ! download! http://redpandas.cn or http://redpanda.sourceforge.net

    各位亲爱的朋友,向大家隆重推出一款由我开发的浏览器-熊猫浏览器panda. 熊猫浏览器目前正在开发之中,想听听各位的建议和意见,以便于改进和提高, 您可以到如下地址下载 http://redpanda ...

  3. 【历史上的今天】7 月 19 日:IMAP 协议之父出生;Project Kotlin 公开亮相;CT 成像实现新突破

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 7 月 19 日,在 2010 年的今天,亚马逊发布了一份新闻稿,提到它现在销售的 Kindle 书 ...

  4. Umbrella Project 2012安全工具合集—Hacktools Ultra

    安全工具合集Umbrella Project 2012 Hacktools Ultra,包括了web安全扫描.反向IP查找.EXPLOIT.破解.代理等多项工具集. 软件功能 1.Web扫描 a) R ...

  5. Java - Panda Follower Monitor

    架构 Server,Spider CrawlId package Peerslee.HotMonitor.Server.Spider; /** 1. 定时抓取id* 2. 上传zk* https:// ...

  6. ideal如何创建dynamic web project

    步骤如下 ① file -> new -> project ② 选择 Java Enterprise -> next ③ create project from template - ...

  7. This version of Android Studio cannot open this project, please retry with Android Studio 3.5 or new

    今天github 下载一个库 导入 as 提示 This version of Android Studio cannot open this project, please retry with A ...

  8. Error:The SDK Build Tools revision (23.0.3) is too low for project ':app'. Minimum required is 25.0.

    导入github上项目的时候出现 Error:The SDK Build Tools revision (23.0.3) is too low for project ':app'. Minimum ...

  9. Error:(49, 1) A problem occurred evaluating project ':guideview'. Could not read script 'https://r

    出现问题如下: Error:(49, 1) A problem occurred evaluating project ':guideview'. > Could not read script ...

  10. IntelliJ IDEA 的Project structure说明

    IntelliJ IDEA 的Project structure可以在File->Project structure中打开,同时,在新建项目是IDE一般用向导的方式让你填写Project str ...

最新文章

  1. 微软云计算业务增长,或成全球最具价值上市公司
  2. 精通八大排序算法系列:二、堆排序算法
  3. 电脑表格日期怎么修改原有日期_为何电脑系统时间常出错或无法修改?怎么解决?...
  4. opencv2 取二进制数据_百亿数据量下,掌握这些Redis技巧你就能Hold全场
  5. vSphere5.1升级5.5(二)——升级Esxi主机及vmware tools
  6. 长春理工大学第十四届程序设计竞赛(重现赛)B
  7. Ajax技术复习---狂神笔记
  8. linux中的bg命令作用,linux bg和fg命令
  9. vivo9.0以上系统如何无需Root激活XPOSED框架的流程
  10. 手机自带的一些很实用的小程序,您都用过了吗?
  11. ffplay flv mp4 转_FLV与MP4格式视频转换
  12. 转:一个情绪稳定的人背后,都是高情商和大格局
  13. 线性代数中的线性方程组
  14. 今天在网上找QQ头像,找到两个字,太强了,一个我老婆的名字,另一个.....用了肯定有人打我脸
  15. 《大学“电路分析基础”课程实验合集.实验四》丨线性电路特性的研究
  16. h5 vr效果_浅谈html5在vr中的应用
  17. 如何理解和成为测试工程师
  18. java andequal_Java equals 和 == 完全解析
  19. 以 rte_mempool_ops_table 为例描述 dpdk 程序库链接顺序对程序执行的影响
  20. 笔记本电脑查询已连接WIFI密码

热门文章

  1. Android:SQLite数据库学习小结
  2. 英文名称:DSPE-PEG10-Mal的试剂分子式是C68H127N2O21P
  3. 股票市场交易中的强化学习
  4. MySQL数据库餐厅点菜系统_餐馆点餐管理系统-数据库课程设计-MySQL
  5. python 安装Cython
  6. 终身教职让美国研究型大学称霸世界,却把中国「青椒」卷怕了!
  7. android spannablestring设置字体颜色,Android SpannableString设置超链接、颜色、字体等属性...
  8. 20221115使用google文档翻译SRT格式的字幕
  9. 天龙八部怀旧服服务器维护,新天龙八部怀旧服游戏2月4日全服更新维护公告
  10. DNX451 与 DNXCORE50 获取当前应用程序目录