TJU 2094 Reserve Bookshelf 题解

Source:  Rocky Mountain 2000

比较烦人的字符串处理问题
题目对于数据范围也没有给出明确的说明

只能开一个大数组来模拟了。
然后每次借走了就标记一下
当还回来的时候就要把这个书在队列最后再新加入了。
输出就按照题目的就可以了
多注意就是了
第一次提交忘记了去掉freopen了

  1#include<map>
  2#include<string.h>
  3#include<stdio.h>
  4#include<string>
  5using namespace std;
  6char cz[40],str[40],use[1000];
  7char data[1000][40];
  8map<string,int> name;
  9string now,t;
 10int l,N,n,num[1000];
 11void PRINT()
 12{
 13    int i;
 14    for(i=l-1;i>=0;i--)
 15        if(use[i])
 16        {
 17            printf("%s%4d\n",data[i],num[i]);
 18
 19        }

 20    printf("AVAILABLE SHELF SPACE:        %4d\n\n",N-n);
 21    gets(str);
 22}

 23void ADD()
 24{
 25    int k,temp=1,L=0;
 26    char ch;
 27    for(k=0;k<6;k++)scanf("%c",&ch);
 28    gets(data[l]);
 29    sscanf(data[l]+30,"%d",&L);
 30    data[l][30]=0;
 31    n+=L;num[l]=L;
 32
 33    t=data[l];
 34    name[t]=l;
 35    use[l]=1;
 36    k=0;
 37    while(n>N)
 38    {    
 39        if(use[k])
 40        {
 41            use[k]=0;
 42            n-=num[k];
 43        }

 44        k++;
 45    }

 46    l++;
 47}

 48void CHECKOUT()
 49{
 50    int k,i;char ch;
 51    scanf("%c",&ch);
 52    gets(str);
 53    for(i=strlen(str);i<30;i++)str[i]=' ';
 54    str[30]=0;
 55    t=str;
 56    k=name[t];
 57    use[k]=0;
 58    n-=num[k];
 59}

 60void RETURN()
 61{
 62    int k,i;
 63    char ch;
 64    for(i=0;i<3;i++)scanf("%c",&ch);
 65    gets(str);
 66    for(i=strlen(str);i<30;i++)str[i]=' ';
 67    str[30]=0;
 68    t=str;
 69    k=name[t];
 70    for(i=0;i<31;i++)data[l][i]=data[k][i];
 71    use[l]=1;num[l]=num[k];
 72    n+=num[l];
 73    k=0;
 74    while(n>N)
 75    {    
 76        if(use[k])
 77        {
 78            use[k]=0;
 79            n-=num[k];
 80        }

 81        k++;
 82    }

 83    l++;
 84}

 85int main()
 86{
 87    //freopen("bbbbbbbbbb.txt","w",stdout);
 88    scanf("%d",&N);n=0;l=0;
 89    name.clear();
 90    memset(use,0,sizeof(use));
 91    while(scanf("%s",cz)!=EOF)
 92    {
 93        now=cz;
 94        if(now=="PRINT")PRINT();
 95        else if(now=="ADD")ADD();
 96        else if(now=="CHECKOUT")CHECKOUT();
 97        else if(now=="RETURN")RETURN();
 98    }

 99    return 0;
100}

101

posted on 2008-07-22 16:42 gong 阅读(342) 评论(2)  编辑 收藏 引用

评论

# re: TJU 2094 Reserve Bookshelf 题解 2008-11-07 19:59 programlover

有翻译吗?题目有点难理解  回复  更多评论   

# re: TJU 2094 Reserve Bookshelf 题解 2010-01-08 13:02 夜雨

在我们学校的oj上面提交返回错误啊  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(6)

随笔档案

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜