SGU 249.Matrix(Gray码)】的更多相关文章

题意: 用0到2^(n+m-1)这2^(n+m-1)个数填在一个2^n*2^m的矩阵里,使得所有相邻的数的二进制表示只有一位不同. Solution: Gray码.对于第i行第j列的数,由i的Gray码左移m位并上j的Gray码得到. #include <cstdio> using namespace std; int n, m, x; int main() { scanf("%d %d",&n,&m); ; i < ( << n); i+…
Atitit Data Matrix dm码的原理与特点 Datamatrix原名Datacode,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于1989年发明. Datamatrix是一种矩阵式二维条码,其发展的构想是希望在较小的条码标签上存入更多的资料量.Datamatrix的最小尺寸是目前所有条码中最小的,尤其特别适用于小零件的标识,以及直接印刷在实体上. Datamatrix又可分为ECC000-140与ECC200两种类型,ECC0…
以下内容是看了Matrix67的关于二进制的blog(Link)的一点总结与摘录. Gray码,中文“格雷码”,是一种特殊的编码,相邻两个格雷码的二进制表示中有且仅有一位不同,且 n 阶 Gray 码是 0~2^n-1 的一个排列. n 阶 Gray  码可以由 n-1 阶 Gray 码镜像翻转之后最前面加一个 '1' 得到. 比如 2 阶 Gray 码为: 00 01 11 10 3 阶: 000 001 011 010 110 111 101 100 这样就巧妙的实现了相邻的数只有一个二进制…
BCD 码:即(Binary Coded Decimal)码,也称为 8421 码,是十进制代码中最常见的一种.每一位的 1 代表的十进制数称为这一位的权.BCD 码中每一位的权都是固定不变的,它属于恒权代码. Gray 码:即格雷码,它每一位的状态变换都按照一定的顺序循环,它最大的优点在于相邻两个代码之间只有一位发生变化,如此一来,代码在转换过程中就不会产生“过渡噪声”. ASCII 码:即美国信息交换标准代码(American Standard Code for Information In…
时间限制:0.5s 空间限制:15M 题意: 给出一个N*M的矩阵A,计算矩阵B,满足B[i][j]=min{ A[x][y]:(y>=j) and ( x>=i+j-y )} Solution : 如图方式从右下角遍历矩阵,那么可令B[i][j]=min(A[i][j],B[i-1][j],B[i][j+1],B[i-1][j+1]) 动态规划即可. 时间复杂度O(n*m) code #include <iostream> #include <cstring> #in…
时间限制:0.25s 空间限制:4M Solution n=10000,m=100000,显然不能用矩阵乘法乘出来. S= ATA 对于矩阵S的一行,所有在A矩阵中1位置的元素都相等,并且都等于这一行1的个数之和.假设有k个1,这一行的和显然是k*k 由此只要统计每一行有多少个1,累加它的平方就可以了.O(n)的时间解决. code #include<cstdio> ], n, m, x, y; int main() { scanf ("%d %d", &n, &a…
#!/usr/bin/env python #coding:utf-8 import sys def gray_code(n): if n < 1: return [] n += 1 array = ["0", "1"] for i in xrange(2, n): times = 2 ** (i-1) for j in xrange(times): array.append("1" + array[times-1-j]) for j in…
#!/usr/bin/env python #coding:utf-8 import sys def gray_code(num, array): if num < 1: return if num == 1: array.append('0') array.append('1') return gray_code(num-1, array) times = 2 ** (num-1) len_ = len(array) for i in xrange(times): array.append('…
sgu 299 题意:给你n个线段,然后问你能不能选出其中三个组成一个三角形,数字很大 收获:另一个大整数模板 那么考虑下为什么如果连续三个不可以的话,一定是不存在呢? 连续上个不合法的话,一定是 ai-1 + ai-2 < = ai; 那么如果我们取右边的数,那是不是aj ,那么aj >= ai就更不可能成立了, 取左边的一样可以证明出不可以 #include<bits/stdc++.h> #define de(x) cout<<#x<<"=&q…
异步FIFO通过比较读写地址进行满空判断,但是读写地址属于不同的时钟域,所以在比较之前需要先将读写地址进行同步处理,将写地址同步到读时钟域再和读地址比较进行FIFO空状态判断(同步后的写地址一定是小于或者等于当前的写地址,所以此时判断FIFO为空不一定是真空,这样更保守),将读地址同步到写时钟域再和写地址比较进行FIFO满状态判断(同步后的读地址一定是小于或者等于当前的读地址,所以此时判断FIFO为满不一定是真空,这样更保守),这样可以保证FIFO的特性:FIFO空之后不能继续读取,FIFO满之…
题目链接:BZOJ - 1081 备注:此题BZOJ上貌似没有 spj ,要把一般顺序的每个格雷码倒着输出...比如 0102 输出为 2010 题目分析 就是按照 Gray 码的生成方法写前几个出来找找规律就好了. 生成方法:以 3 位 3 进制为例 0 0 0 0 0 1 0 0 2 0 1 2 //中位写 1 ,后面镜像复制 0 1 1 0 1 0 0 2 0 //中位写 2,后面镜像复制 0 2 1 0 2 2 1 2 2 //高位写 1 ,后面镜像复制 1 2 1 ........ 代…
题目描述 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码. 给定一个整数n,请返回n位的格雷码,顺序为从0开始. 测试样例: 1 返回:["0","1"] 代码如下: package com.yzh.xuexi;   import java.util.ArrayList; import java.util.List; import java.util.Scann…
二-十进制码(BCD码) 在目前的数字系统中,一般是采用二进制数进行运算的,但是由于人们习惯采用十进制数,因此常需进行十进制数和二进制数之间的转换,其转换方法上面已讨论过了.为了便于数字系统处理十进制数,经常还采用编码的方法,即以若干位二进制码来表示1位十进制数,这种代码称为二进制编码的十进制数,简称二-十进制码,或BCD码(Binary Coded Decimal Codes). 因为十进制数有0-9共10个计数符号,为了表示这10个符号中的某一个,至少需要4位二进制码.4位二进制码有24=1…
DM无法表现汉字等其他形式,而QR码能用数据压缩方式来表示汉字,仅用13bit即可表示一个汉字,比其他二维条码表示汉字的效率提高了20%.相较而言,DM码信息容量小,应用简单.而QR在汉字处理上更有优势. 在纠错能力上,QR码具有四个不同等级的纠错功能,即使破损即使弯曲或者有高达30%的残缺也能够正确识读.显示了其强大的纠错能力,但DM在编码破损上的表现得更为出色.它只需要读取资料的20%即可精确辨读.对少於255个字码的DM二维条码,错误纠正字码可由资料字码计算得出.对於多於255个字码的符号…
1. 格雷码问题: 对于给定的正整数n,格雷码为满足如下条件的一个编码序列: (1) 序列由2n个编码组成,每个编码都是长度为n的二进制位串. (2) 序列中无相同的编码. (3) 序列中位置相邻的两个编码恰有一位不同. 例如:n=1时的格雷码为:{0, 1}. n=2时的格雷码为:{00, 01, 11, 10}. n=3时的格雷码为:{000, 001, 011, 010,110,111,101,100}. gray码问题求解思想: 将一个规模n位gray码序列表示为G(n), G(n)以相…
这几天看了Clifford E. Cummings的两篇大作<Simulation and Synthesis Techniques for Asynchronous FIFO Design>and <Simulation and Synthesis Techniques for Asynchronous FIFO Design with Asynchronous Pointer Comparisons>颇有感想,真可谓经典之作,不可错过. 1.什么是FIFO? FIFO是英文Fi…
Problem Description The reflected binary code, also known as Gray code after Frank Gray, is a binary numeral system where two successive values differ in only onebit (binary digit). The reflected binary code was originally designed to prevent spuriou…
简介 CyclicBarrier 是一个同步辅助工具,允许一组线程全部等待彼此达到共同屏障点,且等待的线程被释放后还可以重新使用,所以叫做Cyclic(循环的). 应用场景 比如出去旅行时,导游需要等待所有的客人到齐后,导游才会给大家讲解注意事项等 官方示例 在JDK的源码注释中,提供了一个简单的示例demo,稍加修改后就可以运行 public class Solver { AtomicInteger sum = new AtomicInteger(0); // 自己新增的一个标识,true代表…
基本原理:       1.读写指针的工作原理 写指针:总是指向下一个将要被写入的单元,复位时,指向第1个单元(编号为0). 读指针:总是指向当前要被读出的数据,复位时,指向第1个单元(编号为0).      2.FIFO的"空"/"满"检测 FIFO设计的关键:产生可靠的FIFO读写指针和生成FIFO"空"/"满"状态标志. 当读写指针相等时,表明FIFO为空,这种情况发生在复位操作时,或者当读指针读出FIFO中最后一个字后…
看过题解后如果觉得还算有用,请帮忙加点我所在团队博客访问量 http://www.cnblogs.com/newbe/ http://www.cnblogs.com/newbe/p/4069834.html http://www.cnblogs.com/newbe/p/4072005.html 求赞求祝福啊!!! http://www.cnblogs.com/newbe/p/4058097.html 软工老师太狠心,还请可怜一下同课不同命的我们吧~点一下文章末尾的推荐什么的呗,有个回复什么的就更…
本文首先对异步 FIFO 设计的重点难点进行分析 最后给出详细代码 一.FIFO简单讲解 FIFO的本质是RAM, 先进先出 重要参数:fifo深度(简单来说就是需要存多少个数据)               fifo位宽(每个数据的位宽) FIFO有同步和异步两种,同步即读写时钟相同,异步即读写时钟不相同 同步FIFO用的少,可以作为数据缓存 异步FIFO可以解决跨时钟域的问题,在应用时需根据实际情况考虑好fifo深度即可 本次要设计一个异步FIFO,深度为8,位宽也是8. 代码是学习Simu…
1. 几何 4 1.1 注意 4 1.2 几何公式 4 1.3 多边形 6 1.4 多边形切割 9 1.5 浮点函数 10 1.6 面积 15 1.7 球面 16 1.8 三角形 17 1.9 三维几何 19 1.10 凸包 26 1.11 网格 28 1.12 圆 28 1.13 整数函数 30 2. 组合 33 2.1 组合公式 33 2.2 排列组合生成 33 2.3 生成gray码 35 2.4 置换(polya) 35 2.5 字典序全排列 36 2.6 字典序组合 36 3. 结构…
为了方便打印,不再将代码放到代码编辑器里,祝你好运. ACM-ICPC竞赛模板(1) 1. 几何 4 1.1 注意 4 1.2 几何公式 4 1.3 多边形 6 1.4 多边形切割 9 1.5 浮点函数 10 1.6 面积 15 1.7 球面 16 1.8 三角形 17 1.9 三维几何 19 1.10 凸包 26 1.11 网格 28 1.12 圆 28 1.13 整数函数 30 2. 组合 33 2.1 组合公式 33 2.2 排列组合生成 33 2.3 生成gray码 35 2.4 置换(…
数字系统有两大类有限状态机(Finite State Machine,FSM):Moore状态机和Mealy状态机. Moore状态机 其最大特点是输出只由当前状态确定,与输入无关.Moore状态机的状态图中的每一个状态都包含一个输出信号.这是一个典型的Moore状态机的状态跳转图,x.y.z是输入,a.b.c是输出. Mealy状态机 它的输出不仅与当前状态有关系,而且与它的输入也有关系,因而在状态图中每条转移边需要包含输入和输出的信息. 状态编码 数字逻辑系统状态机设计中常见的编码方式有:二…
组合逻辑与时序逻辑 组合逻辑电路:任意时刻电路输出的逻辑状态仅仅取决于当时输入的逻辑状态,而与电路过去的工作状态无关. 时序逻辑电路:任意时刻电路输出的逻辑状态不仅取决于当时输入的逻辑状态,而与电路过去的工作状态有关. 在电路的结构上,时序逻辑电路肯定包含有存储电路,而且输出一定与存储电路的状态有关. COMS与TTL电平 常用逻辑电平:12V,5V,3.3V:TTL和CMOS不可以直接互连,由于TTL是在0.3-3.6V之间,而CMOS则是有在12V的有在5V的.CMOS输出接到TTL是可以直…
转自http://ninghechuan.com 异步FIFO有两个异步时钟,一个端口写入数据,一个端口读出数据.通常被用于数据的跨时钟域的传输. 同步FIFO的设计.一个时钟控制一个计数器,计数器增加(只写不读),计数器减少(只读不写),计数器保持(不写不读).计数器为0时,FIFO空,计数器为你定义的最大值,FIFO为满.貌似较容易设计. 很遗憾的是,异步FIFO并不能用这样的思想,因为异步FIFO有两个时钟,并没有办法控制一个计数器读写操作.只能分开读写计数器,通过比较读写指针的值来判断空…
 一.分析 由于是异步FIFO的设计,读写时钟不一样,在产生读空信号和写满信号时,会涉及到跨时钟域的问题,如何解决? 跨时钟域的问题:由于读指针是属于读时钟域的,写指针是属于写时钟域的,而异步FIFO的读写时钟域不同,是异步的,要是将读时钟域的读指针与写时钟域的写指针不做任何处理直接比较肯定是错误的,因此我们需要进行同步处理以后仔进行比较 解决方法:加两级寄存器同步 + 格雷码(目的都是消除亚稳态)   1.使用异步信号进行使用的时候,好的设计都会对异步信号进行同步处理,同步一般采用多级D触发器…
跨时钟域的问题:前一篇已经提到要通过比较读写指针来判断产生读空和写满信号,但是读指针是属于读时钟域的,写指针是属于写时钟域的,而异步FIFO的读写时钟域不同,是异步的,要是将读时钟域的读指针与写时钟域的写指针不做任何处理直接比较肯定是错误的,因此我们需要进行同步处理以后进行比较. 解决方法:两级寄存器同步 + 格雷码 同步的过程有两个: (1)将写时钟域的写指针同步到读时钟域,将同步后的写指针与读时钟域的读指针进行比较产生读空信号: (2)将读时钟域的读指针同步到写时钟域,将同步后的读指针与写时…
  , ) //用格雷码的局限性:循环计数深度必须是2的n次幂,否则就失去了每次只变化一位的特性 (wclk,wrstn,wdata,wfull,winc,rclk,rrstn,rdata,rempty,rinc); input wclk,wrstn,winc; :] wdata; output wfull; input rclk,rrstn,rinc; :] rdata; output rempty; reg wfull,rempty; //空满输出 ] rbin,wbin; //读写二进制地…
本文大部分内容来自Clifford E. Cummings的<Simulation and Synthesis Techniques for Asynchronous FIFO Design>,同时加上一些自己的一些理解,有兴趣的朋友可以阅读原文. 一.FIFO简介 FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完…