BUPT 可恶的数字逻辑

无聊的题目。。。。。。。。。。。。 可恶的数字逻辑 Submit: 166    Accepted:49 Time Limit: 1000MS  Memory Limit: 65536K

Description
为了准备期末考试了,laprovence正被讨厌的数字逻辑搞的头昏脑胀,尤其后面的一堆乱七八糟的概念,简直不知所云@#~!*&~
这不有道简单的题就把他给难住了,题目大意是这样的:给出n个发光二极管,每个二极管都有两种状态,亮(on)与灭(off),然后给出一组每两个二极管之间的约束关系,
约束关系有以下3 种
1)a and b 表示第a个与第b个二极管必须同时亮
2)a or b表示第a个与第b个二极管至少有一个亮
3)a xor b 表示第a个与第b个二极管必须是一个亮,一个灭



Input
第一行两个整数n(二极管的个数,n<=10),m(m组约束关系,m<=50)
然后m行约束关系以a and b,a or b,a xor b的形式给出
多组测试数据,当n=0,m=0时结束



Output
输出每个二极管的状态(一行,每两个状态之间用空格隔开,最后一个不要空格,保证只有一组解),如果没有解输出No solution

Sample Input

2 1
1 and 2
3 3
1 and 2
2 xor 3
1 and 3
0 0


Sample Output

on on
No solution


Source
laprovence@AMMKPAL

#include<stdio.h>
#include<string.h>
int map[11][11];
bool f[11];
int m,n;
bool flag;
void dfs(int depth)
{
 int i,j;
 bool fi=true;
 if(depth>n&&!flag)
 {
  for(i=1;i<=n&&fi;i++)
    for(j=1;j<=n&&fi;j++)
          if(i!=j)
           {
       if(map[i][j]==1)
       {
     if(!f[i]||!f[j])
     {
      fi=false;
      break;
     }
    }
    if(map[i][j]==2)
       {
     if(!f[i]&&!f[j])
     {
      fi=false;
      break;
     }
    }
    if(map[i][j]==3)
       {
     if((!f[i]&&!f[j])||(f[i]&&f[j]))
     {
      fi=false;
      break;
     }
    }
    }
  if(fi)
  {
   flag=true;
   for(i=1;i<=n;i++)
   {
    if(i!=1) printf(" ");
    if(f[i]) printf("on");
    else printf("off");
      }
   printf("/n");
  }    
  return;
 }
 if(!flag)
 {
    f[depth]=true;
    dfs(depth+1);
 }
 if(!flag)
 {
    f[depth]=false;
    dfs(depth+1);
 }
}
int main()
{
 int i,j,a,b;
 char str[10];
 freopen("in.txt","r",stdin);
 freopen("out.txt","w",stdout);
 while(scanf("%d%d",&n,&m)!=EOF)
 {
  flag=false;
  memset(map,0,sizeof(map));
  memset(f,false,sizeof(f));
  if(n==0&&m==0) break;
  for(i=1;i<=m;i++)
  {
   scanf("%d ",&a);
   scanf("%s ",str);
   scanf("%d ",&b);
   if(strcmp(str,"and")==0)
           map[a][b]=1;
   else
   if(strcmp(str,"or")==0)
           map[a][b]=2;
   else
           map[a][b]=3;
  }
  dfs(1);
  if(!flag) printf("No solution/n");
 }
 return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字图像处理期末考试是北京邮电大学(BUPT)的一门重要课程,旨在培养学生对数字图像处理基础知识的理解与应用能力。该考试通常涵盖以下几个主要内容。 首先,考试会涉及基本的数字图像处理概念和原理,如图像获取、采样与量化、离散傅里叶变换等。学生需要掌握这些基础知识,并能够运用它们来解决实际问题。 其次,图像增强和滤波也是考试的重要内容。学生需要了解各种增强和滤波技术的原理和应用,如直方图均衡化、锐化、模糊等。并且需要熟悉不同滤波器的设计和使用,比如均值滤波器、中值滤波器等。 第三,图像压缩与编码也是考试的重要部分。学生应了解各种压缩算法的原理,如无损压缩(如Huffman编码)和有损压缩(如JPEG压缩)。他们需要知道如何选择合适的压缩算法,并能够评估图像压缩的效果和质量。 最后,考试可能会涉及到图像分割和图像识别的基本原理和方法。学生需要了解不同的图像分割算法,如阈值分割、区域生长等,并能够解释它们的优缺点。此外,学生还需要了解图像识别的一些基本算法,如模板匹配、特征提取等。 在准备考试时,学生应该理解并掌握这些概念、原理和方法,并通过练习题和实验来提高自己的操作能力。只有深入理解数字图像处理的基本知识,并能够应用到实际问题中,才能在考试中取得好成绩。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值