zoukankan      html  css  js  c++  java
  • 【PAT甲级】1133 Splitting A Linked List (25分)

    题意:

    输入一个五位非负整数S,一个正整数N(<=100000,一个正整数K(1000),接着输入N行数据,每行包括一个结点的地址,结点的数据,下一个结点的地址(地址为五位非负数,数据为整数),输出处理后的顺序,处理过程为先把所有负的结点筛选出来以原本前后顺序排在链表初端,再把所有[0,K]的结点筛选出来以原本前后顺序排在链表中间,再把所有大于K的结点筛选出来以原本前后顺序排在链表尾端。

    AAAAAccepted code:

     1 #define HAVE_STRUCT_TIMESPEC
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 int sserdda[100007];
     5 int address[100007],num[100007],nex[100007];
     6 int a[100007],b[100007];
     7 int ans[100007];
     8 int main(){
     9     //ios::sync_with_stdio(false);
    10     //cin.tie(NULL);
    11     //cout.tie(NULL);
    12     int s,n,k;
    13     scanf("%d%d%d",&s,&n,&k);
    14     for(int i=1;i<=n;++i){
    15         scanf("%d%d%d",&address[i],&num[i],&nex[i]);
    16         sserdda[address[i]]=i;
    17     }
    18     int cnt=0;
    19     while(1){
    20         int x=sserdda[s];
    21         a[++cnt]=address[x];
    22         b[cnt]=num[x];
    23         s=nex[x];
    24         if(s==-1)
    25             break;
    26     }
    27     int cnt2=0;
    28     for(int i=1;i<=cnt;++i)
    29         if(b[i]<0)
    30             ans[++cnt2]=i;
    31     for(int i=1;i<=cnt;++i)
    32         if(b[i]>=0&&b[i]<=k)
    33             ans[++cnt2]=i;
    34     for(int i=1;i<=cnt;++i)
    35         if(b[i]>k)
    36             ans[++cnt2]=i;
    37     for(int i=1;i<cnt2;++i)
    38         printf("%05d %d %05d
    ",a[ans[i]],b[ans[i]],a[ans[i+1]]);
    39     printf("%05d %d -1",a[ans[cnt2]],b[ans[cnt2]]);
    40     return 0;
    41 }
  • 相关阅读:
    一家软件公司的笔试题
    利用jQuery实现多文件上传
    利用jquery实现内容回滚
    获取MS SQL库数据字典的经典SQL语句
    利用jQuery实现Gridview 选中行相关数据显示
    油气井是怎么打成的
    数据库问题小记(SQL 2000系列)
    利用jQuery实现GridView固定表头
    经典SQL语句
    jQuery改变GridView的样式
  • 原文地址:https://www.cnblogs.com/ldudxy/p/13160632.html
Copyright © 2011-2022 走看看