本文主要是介绍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;
}
这篇关于UVa 340 猜数字游戏的提示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!