| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1084 人关注过本帖
标题:猜数字的问题? 求助
只看楼主 加入收藏
yyjjyyjj000
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-2-24
收藏
 问题点数:0 回复次数:5 
猜数字的问题? 求助
题目描述:
猜数字游戏大家玩过没?经典的规则是给出一个四位数,然后你去猜。
如那个数是1357,你猜1234的话,就给出1A1B,这是什么意思呢?
nA表示有n个数的位置猜对了,nB表示有n个数猜对了,但位置不对,
如果你再猜2351当然给出2A1B了,如果你猜2468,那就是0A0B了。
现在,把四位数扩展到n位,由数字扩展到字符,输入两个字符串,你
判断出猜对位置的和猜对了但位置不对的。如abcdefg和aceg123,结
果就是1A3B

输入:
多组测试数据,每组占一行,每行有两个字符串,串长小于10000,用空格分隔开

输出:
输出这两个字符串比较的结果

样例输入:
1357 1234
abcdefg aceg123
AaAa AAaa
121212 2121212211
Qq qqGame

样例输出:
1A1B
1A3B
2A2B
0A6B
1A0B

我的代码:

程序代码:

#include<iostream>
#include<cstring>
using namespace std;

const int Max=10000;

int main()
{

 char A[Max],B[Max],F[Max];

 int i=0,j=0,Alen=0,Blen=0,len=0;

 int Ncount=0,Pcount=0;

 cin>>A>>B;

 Alen=strlen(A);

 Blen=strlen(B);

 len=Alen>Blen?Alen:Blen;

 for(i=0;i<len;i++)  //找出相同的

 {
  if(A[i]==B[i]) Ncount++;

 }

 for(i=0;i<Alen;i++)  //flag
  F[i]=0;

 for(j=0;j<Blen;j++)  //找出B中与A相同字符的个数,

  for(i=0;i<Alen;i++)  
  {
   if( (B[j]==A[i]) && F[i]!=1 )
   {
    Pcount++;
    F[i]=1;
    break;
   }
   
  }     //Pcount-Ncount则为猜对了,但位置不对的


 cout<<Ncount<<"A"<<Pcount-Ncount<<"B"<<endl;

 return 0;
}



G++: Compile OK

Test  1:    Wrong Answer
--------------------------------
Problem ID     43
Test Result    Wrong Answer
Total Time     NULL
Total Memory   168 Kb / 65536 Kb
Code Length    566 Bytes


题目上的几个例子都是对的呀。。。
不知道什么地方错了。。。

哪位帮忙看看?~~~谢谢..

附个测试数据。顺便问下怎么用。。没用过

200706151306529.rar (7.39 KB)
搜索更多相关主题的帖子: 数字 字符 位置 位数 
2008-02-24 20:26
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include<iostream>
#include<cstring>
#include<time.h>
#include<math.h>
using namespace std;
int guessnumber(int,int*,int*);

int main()
{
int number=0,number1=0,number2=0;
int array1[300]={0};
int array2[300]={0};
int len=0,flag=1;
srand(time(NULL));
cout<<"请输入猜的数字位数:"<<endl;
cin>>len;
for(int i=0;i<len;i++)
array1[i]=abs(rand())%10;
for( int j=len-1;j>=0;j--)
cout<<array1[j];
do
{
cout<<"请输入猜的数字:"<<endl;
cin>>number1;
for(int i=0;i<len;i++)
{
    array2[i]=number1%(10*(int)pow(10,i));
    array2[i]=array2[i]/pow(10,i);
    
}
if(guessnumber(len,array1,array2))
{
    cout<<"数字已经猜对,输入0退出:";
     cin>>flag;
}
}while(flag);

return 0;
}
 
int guessnumber(int len,int *p,int *p1)
{
    int Ncount=0,Pcount=0;
    int p2[300]={0};
    int k=0;
for(int i=0;i<len;i++)  //找出相同的
{
  if(p[i]==p1[i])
     {
      Ncount++;
      p2[i]=1;
  }
}

for(int j=0;j<len;j++)  //找出B中与A相同字符的个数,

  for(int i=0;i<len;i++)  
  {
      if(p2[j]==1) break;
      if(p2[i]==1) continue;
   if( p[j]==p1[i] )
   {
    Pcount++;
   }
  }
  cout<<Ncount<<"A"<<Pcount<<"B"<<endl;
  if(Ncount==len) return 1;
   else return 0;
}
2008-02-24 22:07
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你看看啊.好像可以.....
2008-02-24 22:08
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
ls自己测试啊.我测试好像是对的.如果不对就说一声啊......
2008-02-24 22:39
yyjjyyjj000
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-2-24
收藏
得分:0 
楼上的你的程序好象有问题...开始一输位数就会出现一些另外的数字..
而且你看下题目的输入输出...
我是想问下我的程序算法这些有问题么?为什么测试的时候会出错..
虽然题目上的例子做出来是对的..但是测试出来是错的
在这里测:
http://
2008-02-24 22:44
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
可能有其它一些逻辑错误.可能现在还没有发现.你问问飞燕啊
2008-02-24 23:51
快速回复:猜数字的问题? 求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022921 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved