zoukankan      html  css  js  c++  java
  • projectattact of panda virus

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

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

    }

  • 相关阅读:
    C#串口通信程序SerialPort类
    51单片机和PC串口异步通信
    Robotics ToolBox机械臂仿真
    51单片机和PC串口异步通信(续)
    谈谈FFT有何用
    volatile关键字的使用
    如何走好后面的路
    51单片机液晶显示计时器
    IDE86汇编语言环境使用
    不使用跳转的宏CV_IMIN分析
  • 原文地址:https://www.cnblogs.com/chuxiking/p/1932922.html
Copyright © 2011-2022 走看看