| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4197 人关注过本帖, 1 人收藏
标题:一道强逻辑的题目,大家来试试
只看楼主 加入收藏
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
结帖率:79.37%
收藏(1)
已结贴  问题点数:100 回复次数:52 
一道强逻辑的题目,大家来试试
猜数游戏,在你心中先确定一个四位数a(1000<a<10000),然后计算机屏幕上出现一个四位数b,并让你回答两个问题:
(1)b的四个数字有几个在a出现过?
(2)b的相邻的两位数字(共3个),有几个在a中也以同样的顺序(仍然相邻)出现过?
 例如,a=3125,b=5812,你应该一次回答3和1
提示:计算机通过若干次提问,便能猜出你心中的数。请你为计算机编写一个程序,如何选择b,便可用尽量少的提问次数,得到所需要的答案

各位都做做看,这题逻辑性还是比较强的

[ 本帖最后由 sunyh1999 于 2010-9-1 09:09 编辑 ]
搜索更多相关主题的帖子: 逻辑 
2010-08-31 09:23
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:10 
#include<stdlib.h>
main()
{
int x,a[4],b[4],c[4],i,j;
printf("input a number(1000~10000):\n");
scanf("%d",&x);
randomize();
a[0]=random(10);
a[1]=random(10);
a[2]=random(10);
a[3]=random(10);
b[1]=x/1000;
b[2]=x/100%10;
b[3]=x/10%10;
b[4]=x%10;
printf("%d%d%d%d",a[0],a[1],a[2],a[3]);
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
{
if(a[i]==b[j])
{
printf("\n1");
}
if(a[i]==b[j]&&a[i+1]==b[j+1])
printf("\n2");
}
}
}
显示几个1第一问就该答几   显示几个2第2问就该答几  最后一步不会了,想用数字符串来数几个1和2来做最后的答案  不会

粗心是大敌
2010-08-31 11:23
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
b[1]-b[4]改为b[0]-b[3], 晕

粗心是大敌
2010-08-31 11:32
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
以下是引用sunyh1999在2010-8-31 09:23:25的发言:

猜数游戏,在你心中先确定一个四位数a(1000
100分的强题
太强悍了
BZ无敌了

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-08-31 12:15
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
想明白了  这样
#include<stdlib.h>
main()
{
int x,a[4],b[4],k,s,i,j;
k=0;
s=0;
printf("input a number(1000~10000):\n");
scanf("%d",&x);
randomize();
a[0]=random(10);
a[1]=random(10);
a[2]=random(10);
a[3]=random(10);
b[0]=x/1000;
b[1]=x/100%10;
b[2]=x/10%10;
b[3]=x%10;
printf("%d%d%d%d",a[0],a[1],a[2],a[3]);
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
{
if(a[i]==b[j])
{
k=k+1;
}
if(a[i]==b[j]&&a[i+1]==b[j+1])
s=s+1;
}
}
printf("\n%d,%d",k,s);
}

粗心是大敌
2010-08-31 12:38
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
这个题目的关键算法在于:如何根据回答,修正估计数,更快猜到答案
BZ有什么思路没?

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-08-31 12:46
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
问题不难,但是要什么结果呢?有点看不明白!!

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-31 13:03
langren2526
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2010-3-12
收藏
得分:5 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 5

void fun_one (int a, int b);
void fun_two (int a, int b);
int  fun_three (void);

int main (void)
{
    int i;
    int n;

    printf ("Enter one integer (1000 to 10000): \n");
    scanf ("%d", &i);
    srand (time (NULL));

    while (i > 1000 && i < 10000)
    {
        n = fun_three ();
        printf ("%d\n", n);

        fun_one (i, n);
        fun_two (i, n);

        printf ("Enter one integer (1000 to 10000): \n");
        scanf ("%d", &i);
    }

    return 0;
}

int fun_three (void)
{
    return (1000 + rand() % 9000);
}

void fun_one (int a, int b)
{
    char i_stra[MAX];
    char i_strb[MAX];
    int  n, m;
    int  count = 0;

    itoa (a, i_stra, 10);
    itoa (b, i_strb, 10);
   
    for (n = 0; n < MAX-1; n++)
    {
        for (m = 0; m < MAX-1; m++)
        {
            if (i_strb[n] == i_stra[m])
            {
                count++;
                break;
            }
        }
    }  
    printf ("%d\n", count);
}

void fun_two (int a, int b)
{
    char stra[MAX];
    char strb[MAX];
    int  n, m;
    int  count = 0;

    itoa (a, stra, 10);
    itoa (b, strb, 10);

    for (n = 0; n < MAX-1; n++)
    {
        for (m = 0; m < MAX-1; m++)
        {
            if (strb[n] == stra[m] && strb[n+1] == stra[m+1])
            {
                count++;
                break;
            }
        }
    }
    printf ("%d\n", count);
}
不知道逻辑对不对。。。全当练习了。。。
2010-08-31 16:17
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
版主
这题有点难度
要不这样
从1001开始 直到9999都试一次
直到回答4 4
最多回答998次

呵呵

抛砖引玉

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-08-31 16:18
hiroki
Rank: 2
等 级:论坛游民
帖 子:33
专家分:74
注 册:2008-10-27
收藏
得分:0 
这个好像就是猜数字游戏 啊

我的电脑HK最厉害!
我在电脑上没有阻碍!!
2010-08-31 17:02
快速回复:一道强逻辑的题目,大家来试试
数据加载中...
 
   



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

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