UVa 340 猜数字游戏的提示

/*

* 解题思路:

*      这道题不难、但是题意较难理解

* 题意大致意思就是,   1 3 5 5  x (行)

                                       1 1 2 3  y1

                                       4 3 3 5  y2

                              (列)  a b c d 

*       初始化强联系 s = 0 , 弱联系 w = 0;

*        如果 x 行 a 列和 yi 行 a 列数据相同的话 , 说明他们有强联系,( 列数相同 && 数值相同 )强联系+1;标记x行该位置(强联系用过的数据弱联系不可再用 )

*        强联系关系找完后,类似 x 行 b 列数值和 y1 行 d  列数值相同 , 说明他们有弱联系( 列数不同 && 数值相同 ) 弱联系+1;

*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define A 1010
int des[ A ] , guess[ A ][ A ], vis1[ A ],vis2[A ] ;
int n;
int search( int xx , int yy )
{
    int i;
    for( i=0;i<n;i++ )
        if( !vis1[ i ] && des[ i ] == guess[ xx ][ yy ] )
        {
            vis1[ i ] = 1;
            return 1;
        }
    return 0;
}
int main( )
{
    int i,j;
    int p,x,y;
    int total = 1;

    while( scanf("%d",&n) && n )
    {
        for( i=0;i<n;i++ )
            scanf("%d",&des[ i ] );
        for( p = 0,i=0;i<n;i++ )
            scanf("%d",&guess[ p ][ i ]);
        while( guess[ p++ ][ 0 ] )
            for( i=0;i<n;i++ )
                scanf("%d",&guess[ p ][ i ]);

        p--;
        printf("Game %d:\n",total++);
        for( i=0;i<p;i++ )
        {
            x = y = 0;
            memset( vis1, 0 , sizeof( vis1 ) );
            memset( vis2, 0 , sizeof( vis2 ) );

             for( j=0;j<n;j++ )
                if(  des[ j ] == guess[ i ][ j ] )
                {
                    vis1[ j ] = 1;
                    vis2[ j ] = 1;
                    x++;
                }
            for( j=0;j<n;j++ )
                if( !vis2[ j ] )
                    if( search( i , j ) ) y++;

            printf("    (%d,%d)\n",x,y);
        }
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值