您的位置:首页 > 其它

NYOJ---题目733万圣节派对

2015-03-22 09:49 260 查看

万圣节派对

时间限制:1000 ms | 内存限制:65535 KB

难度:1
描述

万圣节有一个Party,XadillaX显然也要去凑热闹了。因为去凑热闹的人数非常庞大,几十W的数量级吧,自然要进场就需要有门票了。很幸运的,XadillaX竟然拿到了一张真·门票!这真·门票的排列规则有些奇怪:

门票号是由0~6组成的六位数(0~6这几个数字可重用)

每一个门票号的每一位不能有三个连续相同的数字(如123335是不行的)

每一个门票号相邻的两位相差必须在四以下(≤4)(如016245是不行的)

输入第一行一个n,代表输入个数

接下去n行,每行两个数字x,y(x <= y)输出对于每个测试,输出x到y之间的门票编号。每个测试结尾之间空行。样例输入
2
001001 001002
001011 001012

样例输出
001001
001002

001011
001012

来源NBOJ-1004上传者
勿念情

题意:输入一个6位数,在这6位数中不能出现超过三个重复的,也不能使相邻的两位数相差的值超过4,还有就是这个六位数不能出现超过6的数字,这道题就是一个坑,

做这道跪了N次。。。。

我一直wrong的代码:因为没有考虑数组控制的条件不一样,样例都能过去,就一直提交wrong了N次

#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string>
#include<string.h>
using namespace std;
int a[1000010];
char b[10];
int a1[10];
bool zhuanhua(char b[])
{
for(int i=0;i<6;i++)       //再次转化为整形
{
a1[i]=b[i]-'0';
}
int flag=1;
for(int i=0;i<6;i++)       //错误的思想
{
if(a1[i]==a1[i+1]&&a1[i+1]==a1[i+2])
{
flag=0;
break;
}
if(fabs(a1[i+1]-a1[i])>4)
{
flag=0;
break;
}
if(a1[i]>6)
{
flag=0;
break;
}

}
if(flag)
return true;
else
return false;
}

int main()
{
int n;
int x,y;
cin>>n;
while(n--)
{
memset(b,0,sizeof(b));
int t=0;
for(int i=x;i<=y;i++)
{
a[t++]=i;
}
for(int i=0;i<t;i++)
{
sprintf(b,"%06d",a[i]);            //把整数转化为字符型的数组里面存储
if(zhuanhua(b))
printf("%06d\n",a[i]);
}
printf("\n");

}
return 0;
}
正确的代码:

#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string>
#include<string.h>
using namespace std;
int a[1000010];
char b[10];
int a1[10];
bool zhuanhua(char b[])
{
for(int i=0;i<6;i++)
{
a1[i]=b[i]-'0';
}
int flag=1;
for(int i=0;i<6;i++)
{
if(a1[i]>6)
{
flag=0;
break;
}

}
for(int i=0;i<4;i++)
{
if(a1[i]==a1[i+1]&&a1[i+1]==a1[i+2])
{
flag=0;
break;
}
}
for(int i=0;i<5;i++)
{
if(fabs(a1[i+1]-a1[i])>4)
{
flag=0;
break;
}
}
if(flag)
return true;
else
return false;
}

int main()
{
int n;
int x,y;
cin>>n;
while(n--)
{
memset(b,0,sizeof(b));
int t=0;
cin>>x>>y;
for(int i=x;i<=y;i++)
{
a[t++]=i;
}
for(int i=0;i<t;i++)
{
sprintf(b,"%06d",a[i]);
if(zhuanhua(b))
printf("%06d\n",a[i]);
}
printf("\n");

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: