文档章节

c语言生成zigzag矩阵

itfanr
 itfanr
发布于 2015/09/14 14:09
字数 314
阅读 81
收藏 3

生成的矩阵:

00  01  05  06  
02  04  07  12  
03  08  11  13  
09  10  14  15
#include <stdio.h>

/*
0, 1, 5, 6,
2, 4, 7,12,
3, 8, 11,13,
9, 10, 14, 15.
*/
int vect[4][4] = {0}; 
void next(int vect[][4], int *i , int *j ,bool flag){
	int tmp = vect[*i][*j] +1;
	if(flag){	
		*i = *i + 1 ;	//down
		*j = *j - 1 ;
		//printf("down i = %d\n", *i);
		vect[*i][*j] = tmp  ;
		//printf("down vect[%d][%d] = %d\n", *i,*j ,vect[*i][*j]);
	}
	else{
		*i = *i - 1 ;	//up
		*j = *j + 1 ;	
		//printf("up i = %d\n", *i);
		vect[*i][*j] = tmp  ;
		//printf("up vect[%d][%d] = %d\n", *i, *j ,vect[*i][*j]);
	}
	
};

void print(){
	for (int i = 0; i < 4; ++i)
	{
		for (int j = 0; j < 4; ++j)
		{
			//printf("vect[%d][%d] = %d ", i,j ,vect[i][j]);
			printf("%02d  ", vect[i][j]);
		}
		printf("\n");
	}
}



int main(int argc, char const *argv[])
{
	const int N = 4 ;
	int j = 0 , i = 0;

	int count = 2; 
	int total = 2 * N ;
	int line = 1 ; 
	bool down = false  ; //up 
	bool change = false ;
	while(line < total ) {

		if(down){
			int tmp = vect[i][j] ;
			if(change){
				j ++ ;	
			}else{
				i ++ ;	
			}
			vect[i][j] = tmp+1 ; 					
			down = false ;

			}else{  //up 
				int tmp = vect[i][j] ;	
				if(change){
					i++ ;
				}else{
					i = 0 ;
					j++;	
				}
				vect[i][j] = tmp+1 ; 
				down = true ;
		}					 

		//printf("count = %d\n", count);// 2 	 
		//printf("out of while : vect[%d][%d] = %d\n", i,j ,vect[i][j]);
		int curr = 0 ;
		while(curr < count -1  ){
			//printf("now j =%d , i= %d \n" , j , i) ;
			//printf("vect= %d \n" , vect[i][j]) ;	
			//printf("down flag is %d\n", down );
			next(vect , &i , &j, down) ; 
			curr++ ;		
			//printf("\n");		
		}

		line ++ ;
		if(change){
			count -- ;
		}else{
			count ++ ;
			if(count > N ) {
				change = true ;
				count = count -2 ;
			}
		}

	}
	print() ;
	return 0 ;
}


© 著作权归作者所有

itfanr
粉丝 119
博文 486
码字总数 172696
作品 1
济南
程序员
私信 提问
编码原理(七) --回顾

1 DCT变换 经过DCT变换,实现了频率的集中。 2量化 经过量化,我们对DCT变换后的系数进行以QP=28的量化,此时得到了一些左上角集中了非零值的系数矩阵。 3 ZigZag扫描 ZigZag扫描,将二维的系...

mmlf
2018/02/07
0
0
输入n,求一个n×n矩阵,规定矩阵沿45度递增,形成zigzag数组

输入n,求一个n×n矩阵,规定矩阵沿45度递增,形成zigzag数组 2010-08-25 9:19

peterli
2012/08/25
416
0
编码原理详解(五)---熵编码(CAVAL)

上一篇我们讲到了ZigZag扫描,经过这一扫描之后,发现原本是4*4的像素矩阵,就变成了一连串的数字,可以说是二维到一维的一个转换吧,而且经过ZigZag扫描后,一连串的数字的最后大部分为0,以...

mmlf
2018/02/05
0
0
[CCFwithAxin]201412-2 Z字形扫描(类似蛇形矩阵)

前言 还记得被大一蛇形矩阵支配的恐惧吗?昨天闲来无事看看紫书,还看到了,今天就遇上Z形了。 题目 试题编号: 201412-2 试题名称: Z字形扫描 时间限制: 2.0s 内存限制: 256.0MB 问题描述...

XiyouLinux_Kangyijie
2017/11/01
0
0
[LeetCode] Zigzag Iterator 之字形迭代器

Given two 1d vectors, implement an iterator to return their elements alternately. For example, given two 1d vectors: v1 = [1, 2]v2 = [3, 4, 5, 6] By calling next repeatedly unti......

机器的心脏
2017/12/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
昨天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
昨天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部