停车场管理(TP-LINK 2010年校园招聘),要求尽可能减少使用空间

来源:互联网 发布:大学室友关系知乎 编辑:程序博客网 时间:2024/04/29 05:52

/*****转帖请注明 原创于华南理工 吴泳添*****/

Code:
  1. /*****转帖请注明 原创于华南理工 吴泳添*****/  
  2. #include <iostream>   
  3. #include <math.h>   
  4. using namespace std;   
  5. //使用4个字节的32位记录停车点00000000,00000000,00000000,00000000   
  6. unsigned int N = 0;   
  7. int i = 0;   
  8. int countNum = 0;   
  9.   
  10. int initParking()   
  11. {   
  12.     N = N^ (unsigned int)pow(2,i);   
  13.     i++;   
  14.     countNum++;   
  15.     return i;   
  16. }   
  17.   
  18. bool recoverParking(int outNum)   
  19. {   
  20.     i = outNum-1;      
  21.     if ( (N^ (unsigned int)pow(2,i) )>N )   
  22.     {   
  23.         return 0;   
  24.     }   
  25.     N = N^ (unsigned int)pow(2,i);   
  26.     countNum--;   
  27.     return 1;   
  28. }   
  29.   
  30. int NumOfParking()   
  31. {   
  32.     return countNum;   
  33. }   
  34.   
  35. void main()   
  36. {   
  37.     cout<<"停车场管理系统!"<<endl;   
  38.     for (;;)   
  39.     {   
  40.         int order;   
  41.         cout<<"--------------------------------------------------------------------"<<endl;   
  42.         cout<<"输入命令:(“1”为停车,“2”为出车,“3”为查看车数目,“4”为退出)"<<endl;   
  43.         cin>>order;   
  44.         if (order>4||order<1)   
  45.         {   
  46.             cout<<"输入错误,重新输入:"<<endl;   
  47.             continue;   
  48.         }   
  49.         if (order == 1&&(countNum >=32 || i>=32))   
  50.         {   
  51.             i=0;   
  52.             if(countNum>=32)cout<<"车辆停放已满!!"<<endl;   
  53.             continue;   
  54.         }   
  55.         if (order == 4)   
  56.         {   
  57.             break;   
  58.         }   
  59.         if (order == 1)   
  60.         {   
  61. up:         if ((N^ ((unsigned int)pow(2 ,i)))>N)   
  62.             {   
  63.                 printf("有车辆停入,停车号:%d/n",initParking());   
  64. //              cout<<N<<endl;   
  65.                 continue;   
  66.             }   
  67.             else  
  68.                 if(i<31)   
  69.                 {   
  70.                     i++;   
  71.                     goto up;   
  72.                 }   
  73.                 else    
  74.                 {   
  75.                     i = 0;   
  76.                     goto up;   
  77.                 }              
  78.         }   
  79.         if (order == 2)   
  80.         {          
  81.             int outNum;   
  82.             cout<<"输入开出的车辆号:"<<endl;   
  83.             cin>>outNum;   
  84.             if (recoverParking(outNum)&&outNum<=32)   
  85.             {      
  86.                 printf("车辆开出成功,该停车号为:%d/n",outNum);   
  87.                 continue;   
  88.             }   
  89.             cout<<"无此车辆号!!请重新输入!"<<endl;   
  90.         }   
  91.         if (order == 3)   
  92.         {   
  93.             printf("已经停放车辆数:%d/n",NumOfParking());   
  94.             continue;   
  95.         }   
  96.     }   
  97. }   
  98. /*****转帖请注明 原创于华南理工 吴泳添*****/  

代码有待改善!!!!