syhd142  
日历
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567
统计
  • 随笔 - 23
  • 文章 - 122
  • 评论 - 31
  • 引用 - 0

导航

常用链接

留言簿(2)

随笔档案(23)

文章分类(270)

文章档案(122)

我的豆瓣

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
简单的猜数字游戏,直接枚举接好,注意输出的时候要前缀0。MMD,浪费了好多时间在这上面。
#include <stdio.h>

#define N 15

struct guess
{
  
int num[4];
  
int a, b;
}g[N];

int main()
{
//  freopen("in", "r", stdin);
  int t, n, a, b, data;
  scanf(
"%d"&t);
  
while(t--)
  {
    scanf(
"%d"&n);
    
for(int i = 0; i < n; i++)
    {
        scanf(
"%d %d/%d"&data, &a, &b);
        g[i].num[
0= data / 1000; g[i].num[1= (data % 1000/ 100;
        g[i].num[
2= (data % 100/ 10; g[i].num[3= data % 10;
        g[i].a 
= a, g[i].b = b;
    }
    
int num[4], mk[2][4], flag, count(0), ans[4];
    
for(int i = 0; i < 10000; i++)
    {
        num[
0= i / 1000; num[1= (i % 1000/ 100;
        num[
2= (i % 100/ 10; num[3= i % 10;
        flag 
= 0;
        
for(int j = 0; j < n; j++)
        {
            a 
= b = 0;
            
for(int k = 0; k < 4; k++) mk[0][k] = mk[1][k] = 0;
            
for(int k = 0; k < 4; k++)
            {
                
if(num[k] == g[j].num[k])
                {
                    mk[
0][k] = mk[1][k] = 1;
                    a
++;
                }
            }
            
for(int k = 0; k < 4; k++)
            {
                
if(mk[0][k]) continue;
                
for(int l = 0; l < 4; l++)
                {
                    
if(mk[1][l]) continue;
                    
if(g[j].num[k] == num[l])
                    {
                        mk[
0][k] = mk[1][l] = 1;
                        b
++;
                        
break;
                    }
                }
            }
            
if(a != g[j].a || b != g[j].b)
            {
                flag 
= 1;
                
break;
            }
        }
        
if(!flag)
        {
            count
++;
            ans[
0= num[0], ans[1= num[1];
            ans[
2= num[2], ans[3= num[3];
        }
    }
    
if(!count) puts("impossible");
    
else if(count == 1) printf("%d%d%d%d\n", ans[0], ans[1], ans[2], ans[3]);
    
else puts("indeterminate");
  }
  
return 0;
}
posted on 2010-11-02 12:35 Fucker 阅读(383) 评论(0)  编辑 收藏 引用 所属分类: ACM/ICPC简单模拟

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


 
Copyright © Fucker Powered by: 博客园 模板提供:沪江博客