关闭

POJ 1250 Tanning Salon

293人阅读 评论(0) 收藏 举报
分类:

传送门:http://poj.org/problem?id=1250

 题意:有n个位置,每个字母第一次出现代表客人的进来,第二次出现代表离开 , 统计流失了几个客户

我一直纠结的是Tanning是什么意思?题目为简单题,不要想到队列和栈,完全模拟即能过。只是有一句话不好理解,“Customers who leave without tanning always depart before customers who are currently tanning.”,意思是第二次扫描到相同的人的时候,是离开的人,没有床位离开的人总是depart处理的,即算上一个计数,其实就是如果顾客i来的时候没有空位了,无论他什么时候离开,都是算做没有住旅馆。


但是问题就来了,但数据为 1 ABCACB 1ABCBAC的时候应该输出2吧,但我AC的代码是输出1。。。。。这就尴尬了,数据弱么。。。。还是说给的数据都是占到床铺的人一定会在没有床睡的人之后离开?


#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char weizhi[30];

int main()
{
   //freopen("in.txt","r",stdin);
   int n,flag,ans;
   string s;
   while(cin>>n&&n!=0){
    cin>>s;
    int i,j;
    ans = 0;
    memset(weizhi,'*',sizeof(weizhi));
    for(i=0;i<s.length();i++){
        flag = 0; //为0表示进入
        for(j=0;j<n;j++){ //离开后清空位置
            if(weizhi[j]==s[i]){
                weizhi[j]='*';
                flag = 1;
                break; //清空扫描下一个人
            }
    }
    //位置满了后,即超过n个,来的人直接走
    if(flag==0)
    for(j=0; j<n; j++){
        if(weizhi[j]=='*')
        {
            weizhi[j]=s[i];
            break;
        }
    }
    if(j==n)
        ans++;

    }
    if(ans==0)
        cout<<"All customers tanned successfully."<<endl;
    if(ans!=0)
        cout<<ans/2<<" customer(s) walked away."<<endl;

}
return 0;
}

感觉我AC的代码还是有点问题的,按照题目上那么说,看了下网上其他人的代码,对数据1 ABCACB 1 ABCBAC输出为2的有:

#include <cstdio>
#include<iostream>
#include<string>
#include <cstring>
#include<algorithm>
#define max(a,b) (a>b?a:b)
#define abs(a) ((a)>0?(a):-(a))
#define min(a,b) (a<b?a:b)
using namespace std;
int n;
bool vis[30];
string s;
int main()
{
	while(scanf("%d",&n),n)
	{
		memset(vis,0,sizeof(vis));
		cin>>s;
		int ans=0;
		for(int i=0;i<s.length();i++)
		{
			int t=s[i]-'A';
			if(!vis[t])
			{
				if(n<=0)
				{
					n--;
					ans++;
				}
				else
				{
					n--;
				}
			}
			else
			{
				n++;
			}
			vis[t]=!vis[t];
		}
		if(!ans)
			printf("All customers tanned successfully.\n");
		else
			printf("%d customer(s) walked away.\n",ans);
	}
	return 0;
}

网上还有好多都是2的,感觉人家的才是真正能AC的。。。。(ノಠ益ಠ)ノ彡┻━┻

0
0
查看评论

POJ1250:Tanning Salon

Description Tan Your Hide, Inc., owns several coin-operated tanning salons. Research has shown that if a customer arrives and there are no beds avail...
  • libin56842
  • libin56842
  • 2014-03-01 21:55
  • 2320

POJ 1250 tanning salon

# include # include int main(void) { int n; char c; int count; char a[1000]; char b[1000]; int i; int depart; while (scanf("%...
  • liuxueyang457
  • liuxueyang457
  • 2012-07-31 09:44
  • 328

POJ - 1250 Tanning Salon

解题思路:水题,与栈有点像
  • lzc504603913
  • lzc504603913
  • 2017-06-04 15:28
  • 86

poj 1250 Tanning Salon

这题不用完全模拟不好做,我放弃用逻辑分析的方法。。 错误的分析代码: #include #include int main() { int n; char Customers[100]; while(scanf("%d",&n)) //n 代表床位数量 ...
  • Scythe666
  • Scythe666
  • 2013-10-25 10:08
  • 907

poj 1250(Tanning Salon)

题意:一个旅馆有n个位,给出所有旅客到达旅馆和离开旅馆的顺序,问有多少旅客是没有住旅馆就离开的。 由于题目中告诉每个顾客只会出现一次,所以我用一个数组存储每个顾客的情况直接模拟: Tanning Salon Time Limit: 1000MS   Me
  • ll365594480
  • ll365594480
  • 2011-09-15 00:02
  • 420

poj 1250 Tanning Salon(模拟)

题意是告诉你有几个床位,然后客人来,走,来,走,问几个客人走了。
  • u013508213
  • u013508213
  • 2014-04-28 10:37
  • 337

POJ 1250 Tanning Salon(简单模拟)

Description 一个旅馆有n个位,给出所有旅客到达旅馆和离开旅馆的顺序,问有多少旅客是没有住旅馆就离开的 Input 多组用例,每组用例首先输入旅馆的床位数n(n Output 对于每组用例,输出没有住旅馆就离开的旅客人数,若是所有旅客均住旅馆则输出All customers tan...
  • V5ZSQ
  • V5ZSQ
  • 2015-08-24 09:04
  • 319

poj 1250 Tanning Salon(模拟)

模拟题。一家澡堂,床位有限,有一连串客人来,叫你统计最终有多少名客人扫兴回去了,(其实就是看看有多少个客人流失)一张床目前只能睡一个人,走了之后其他人才能用这张床。要注意的是如果B连续来了两次都没有空床位叫她洗澡,那只能算一个人#include #include #include using nam...
  • u011366828
  • u011366828
  • 2013-07-15 17:35
  • 576

poj 1250 Tanning Salon 【模拟题】

Tanning Salon Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8073   Accepted: 4322 ...
  • dxx_111
  • dxx_111
  • 2015-11-07 11:26
  • 143

toj1923 Tanning Salon

题目链接:http://acm.tju.edu.cn/toj/showp.php?pid=1923 题目大意:给定椅子数目,给定一序列表示人来了又走,问来了马上就走(表示没有椅子了)的人数。 思路:这题目感觉像栈,但其实没有用到栈,用一个标记已经用了的椅子数目,用一个标记人是否已经占到座位,用一...
  • lanximu
  • lanximu
  • 2013-09-24 17:18
  • 759
    个人资料
    • 访问:129807次
    • 积分:4991
    • 等级:
    • 排名:第6730名
    • 原创:391篇
    • 转载:33篇
    • 译文:0篇
    • 评论:20条
    博客专栏
    点击投喂