169it科技资讯
169it -->


当前位置:  互联网>综合
本页文章导读:
    ▪二维数组中的最长递减子序列      给定一个如下的二维数组a[][] 1   3   5   7   4 2   1   8   6   5 4   0  -1  -2   6 求其中的最长递减子序列:7, 5, 3, 1, 0, -1, -2,长度为7。子序列只能朝向上......
    ▪内嵌W5100的网络模块WIZ812MJ--数据手册       1.简介 TCP/IP, MAC 层协议: W5100 物理层: 内置 W5100 接口: MAG-JACK(带变压器的RJ45) 1.1. 特点 1.3.   WIZ811MJ和WIZ812MJ之间的区别 ......
    ▪xss 跨站脚本攻击      这是一个非常简单的攻击。 两个页面如下: <form action="MyJsp.jsp" method="get"> <input type="text" name="content"/> <input type="submit" values="submit&q......
      最新IT科技资讯推荐: -1

[1]二维数组中的最长递减子序列
    来源: 互联网  发布时间: 2013-10-26

给定一个如下的二维数组a[][]

1   3   5   7   4

2   1   8   6   5

4   0  -1  -2   6

求其中的最长递减子序列:7, 5, 3, 1, 0, -1, -2,长度为7。子序列只能朝向上下左右四个方向,不能朝对角线方向。

思路:

该题一看感觉可以用动态规划做,但是下标不确定从哪里开始算起,因为有上下左右四个方向,没有办法顺序计算。只有用递归的方法来做。用一个函数FindMax(i, j)来表示以该位置起始的最长递减子序列的长度,那么只要取FindMax(i-1, j)、FindMax(i+1, j)、FindMax(i, j-1)、FindMax(i, j+1)中的最大值,然后加1即可,当然前提是上下左右的元素比(i, j)的元素小。

代码如下:

#include <iostream>
#include <assert.h>
using namespace std;

int Max(int a, int b, int c, int d)
{
	a = (a > b) ? a : b;
	a = (a > c) ? a : c;
	return (a > d) ? a : d;
}

int FindMax(int a[], int res[], bool flag[], int m, int n, int i, int j)
{
	int umax = 0, dmax = 0, lmax = 0, rmax = 0;
	//当前元素的下标
	int cur = i * n + j;

	//上面的元素
	int up = (i - 1) * n + j;
	//如果存在上面的元素,并且当前元素大于上面元素,就计算上面元素的最长路径
	if (i > 0 && a[cur] > a[up])
	{
		//如果上面元素的标记为false,说明上面元素的最长路径还没有计算
		if (!flag[up])
		{
			//计算上面元素的最长路径,计算结束后将上面元素的标记赋值为true
			umax = FindMax(a, res, flag, m, n, i-1, j);
			res[up] = umax;
			flag[up] = true;
		}
		//如果上面元素的标记为true,说明已经计算过,直接取结果
		else
			umax = res[up];
	}

	//下面的元素
	int down = (i + 1) * n + j;
	if (i < m-1 && a[cur] > a[down])
	{
		if (!flag[down])
		{
			dmax = FindMax(a, res, flag, m, n, i+1, j);
			res[down] = dmax;
			flag[down] = true;
		}
		else
			dmax = res[down];
	}

	//左边的元素
	int left = i * n + j - 1;
	if (j > 0 && a[cur] > a[left])
	{
		if (!flag[left])
		{
			lmax = FindMax(a, res, flag, m, n, i, j-1);
			res[left] = lmax;
			flag[left] = true;
		}
		else
			lmax = res[left];
	}

	//右边的元素
	int right = i * n + j + 1;
	if (j < n-1 && a[cur] > a[right])
	{
		if (!flag[right])
		{
			rmax = FindMax(a, res, flag, m, n, i, j+1);
			res[right] = rmax;
			flag[right] = true;
		}
		else
			rmax = res[right];
	}

	//当上下左右元素的值都计算完,就可以计算当前元素的最长路径了
	flag[cur] = true;
	res[cur] = 1 + Max(umax, dmax, lmax, rmax);
	return res[cur];
}

int LDS(int a[], int m, int n)
{
	assert(a != NULL && m > 0 && n > 0);
	int* res = new int[m * n];
	memset(res, 0, m*n*sizeof(int));
	bool* flag = new bool[m * n];
	memset(flag, false, m*n*sizeof(bool));
	int max = 0;
	//计算以每个元素起始的最长路径长度,并记录全局的最长路径长度max
	for (int i = 0; i < m; ++i)
	{
		for (int j = 0; j < n; ++j)
		{
			int cur = i * n + j;
			if (!flag[cur])
				FindMax(a, res, flag, m, n, i, j);
			if (max < res[cur])
				max = res[cur];
		}
	}
	delete [] res;
	delete [] flag;
	return max;
}


void main()
{
	int a[] = {
		100,100,18,19,20,
		10,100,16,100,14,
		12,14,15,100,12,
		100,100,11,100,11,
		100,100,9,100,7};
	int m = 5, n = 5;
	cout << LDS(a, m, n) << endl;
}



作者:f_x_q 发表于2013-8-18 21:37:31 原文链接
阅读:0 评论:0 查看评论

    
[2]内嵌W5100的网络模块WIZ812MJ--数据手册
    来源: 互联网  发布时间: 2013-10-26

1.简介

WIZ812MJ是一款内嵌了W5100(TCP/IP硬件芯片,内置PHY)、MAG-JACK(带变压器的RJ45)和其他胶连逻辑的网络模块。它可以当作一个组件使用,而且不需要为W5100和变压器准备接口。对于那些想要快速的开发互联网应用系统的用户来说,WIZ812MJ是一个理想的选择。

想了解更多关于硬件TCP/IP应用的信息,请参阅W5100的数据手册。WIZ812MJ 由 W5100 和 MAG-JACK 组成。

  • TCP/IP, MAC 层协议: W5100
  • 物理层: 内置 W5100
  • 接口: MAG-JACK(带变压器的RJ45)
1.1. 特点
  • 支持10/100 Base TX
  • 支持半/全双工
  • 支持自动协商和自动交叉检测
  • 符合IEEE 802.3/802.3u标准
  • 工作电压3.3V,I/O口可承受5V电压
  • 支持网络状态指示器LED
  • 内置硬件互联网协议:TCP,IP Ver.4,UDP,ICMP,ARP,PPPoE,IGMP
  • 内置硬件以太网协议:DLC,MAC
  • 支持同时的4个独立连接
  • 支持单片机总线接口和SPI接口
  • 支持直接/间接模式总线访问
  • 支持接口API以便应用程序开发
  • 2.54mm间距2 x10排针接口
  • 温度:0 ~ 70℃ (工作), -40 ~ 85℃ (贮存)
1.2. 模块图

1.3.   WIZ811MJ和WIZ812MJ之间的区别

2.引脚分配 & 描述 2.1. 引脚分配
    
[3]xss 跨站脚本攻击
    来源: 互联网  发布时间: 2013-10-26

这是一个非常简单的攻击。

两个页面如下:

<form action="MyJsp.jsp" method="get">
    	<input type="text" name="content"/>
    	<input type="submit" values="submit"/>
</form>
<% 
	out.print(request.getParameter("content"));
%>
如果攻击者在输入框里面输入以下内容:
<script>alert('Help me ask you sisiter hello...')</script>
那么就有以下结果:


当然,用户还可以输入:

<script>alert(document.cookie)</script>

用户还可以直接在地址栏输入:如下:


不仅可以注入script,还可以直接注入html代码。。。

http://localhost:8080/Test/MyJsp.jsp?content=<script><a href="http://weibo.com/shangaoquangengqing">My Weibo</a></script>


攻击者输入的内容可以改的,大家都明白这是很危险的。
这个在高级的浏览器,比如现在的360急速浏览器是不能通过的,具体原因未深究。


防范方法很多,最简单的就是将代码的一下基本字符替换掉,比如< > " \等。

以后写代码留意一点就行。

作者:qiantujava 发表于2013-8-19 17:39:40 原文链接
阅读:23 评论:0 查看评论

    
最新技术文章:
▪用户及权限基础 2---- Linux权限    ▪用户及权限基础 3---- Linux扩展权限    ▪git 简明教程(1) --创建及提交
▪背包 代码    ▪json对象的封装与解析    ▪01背包,完全背包,多重背包 ,模板代码
▪apache安装详解    ▪HDU 4668 Finding string (解析字符串 + KMP)    ▪《TCP-IP详解 卷1:协议》学习笔记(二)
▪《TCP-IP详解 卷1:协议》学习笔记(持续更新    ▪windows下使用swig    ▪gensim试用
▪Linux Shell脚本编程--nc命令使用详解    ▪solr对跨服务器表联合查询的配置    ▪递归和非递归实现链表反转
▪Linux磁盘及文件系统管理 1---- 磁盘基本概念    ▪Cholesky Decomposition    ▪HTTP协议学习
▪用C语言写CGI入门教程    ▪用hdfs存储海量的视频数据的设计思路    ▪java多线程下载的实现示例
▪【原创】eAccelerator 一个锁bug问题跟踪    ▪hadoop学习之ZooKeeper    ▪使用cuzysdk web API 实现购物导航类网站
▪二维数组中的最长递减子序列    ▪内嵌W5100的网络模块WIZ812MJ--数据手册    ▪xss 跨站脚本攻击
▪RobotFramework+Selenium2环境搭建与入门实例    ▪什么是API    ▪用PersonalRank实现基于图的推荐算法
▪Logtype    ▪关于端口号你知道多少!    ▪Linux基本操作 1-----命令行BASH的基本操作
▪CI8.7--硬币组合问题    ▪Ruby on Rails 学习(五)    ▪如何使用W5300实现ADSL连接(二)
▪不允许启动新事务,因为有其他线程正在该会    ▪getting start with storm 翻译 第六章 part-3    ▪递归求排列和组合(无重复和有重复)
▪工具类之二:RegexpUtils    ▪Coding Interview 8.2    ▪Coding Interview 8.5
▪素因子分解 Prime factorization    ▪C# DllImport的用法    ▪图的相关算法
▪Softmax算法:逻辑回归的扩展    ▪最小生成树---Kruskal算法---挑战程序设计竞赛    ▪J2EE struts2 登录验证
▪任意两点间的最短路径---floyd_warshall算法    ▪Sqoop实现关系型数据库到hive的数据传输    ▪FFMPEG采集摄像头数据并切片为iPhone的HTTP Stream
▪Ubuntu 13.04 – Install Jetty 9    ▪TCP/IP笔记之多播与广播    ▪keytool+tomcat配置HTTPS双向证书认证
▪安装phantomjs    ▪Page Redirect Speed Test    ▪windows media player 中播放pls的方法
▪sre_constants.error: unbalanced parenthesis    ▪http headers    ▪Google MapReduce中文版
▪The TCP three-way handshake (connect)/four wave (closed)    ▪网站反爬虫    ▪Log4j实现对Java日志的配置全攻略
▪Bit Map解析    ▪Notepad 快捷键 大全    ▪Eclipse 快捷键技巧 + 重构
▪win7 打开防火墙端口    ▪Linux Shell脚本入门--awk命令详解    ▪Linux Shell脚本入门--Uniq命令
▪Linux(Android NDK)如何避免僵死进程    ▪http Content-Type一览表    ▪Redis实战之征服 Redis + Jedis + Spring (二)
▪Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源    ▪利用SQOOP将ORACLE到HDFS    ▪django输出 hello world
▪python re    ▪unity3D与网页的交互    ▪内存共享基本演示
▪python join    ▪不再为无限级树结构烦恼,且看此篇    ▪python实现变参
▪打开文件数限制功能不断地制造问题    ▪Arduino Due, Maple and Teensy3.0 的 W5200性能测试    ▪Selenium实例----12306网站测试
▪基于协同过滤的推荐引擎    ▪C4.5决策树    ▪C#HTTP代理的实现之注册表实现
▪nosql和关系型数据库比较?    ▪如何快速比较这两个字符串是否相等?    ▪hdoj 1863 畅通工程 最小生成树---prime算法
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2015,169IT.COM,站长邮箱:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号