1、2,有多少数据就画多少曲线,前或后没有就断开呗,前后都没有就画横线。
创新互联专注于浉河企业网站建设,响应式网站建设,商城网站开发。浉河网站建设公司,为浉河等地区提供建站服务。全流程按需开发网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
3,数据库按时间排序,选出最新时间值,然后根据这个值
,通过类似 select * from table where date#2010-8-20# and date#2007-8-23# 这样的语句选出往前两天的数据。
看了你说递归的效率低。那么你可以不用的。
给出的方法就是先生成第一个排列,然后每次调用下面的函数给出下一个排列,这样生成的效率很高,这个函数可以内联。
这个是很经典的排列组合算法啊?在网上能搜到一大堆。
大概是那种带指向的移动的算法。我给你搜一个吧。
我找了几个,这个是我觉得说的比较清楚的,你可以仔细参考一下,看不懂的话再搜点别的好了。。
全排列的算法跟这个不太一样的。需要有点改动的。
至于语言的话,应该不会有太大问题吧。。basic版的确实比较少,现在我也比较懒不想动手写。。还是要靠你自己啦。
★生成排列的算法:
比如要生成5,4,3,2,1的全排列,首先找出一个最小的排列12345, 然后依次调用n!次STL算法中的next_permutation()即可输出所有的全排列情况。所以这种算法的细节就是STL algorithm中next_permutation()的实现机制。详细的实现代码,大伙可以参考侯捷的《STL源代码剖析》,在这里我只说一下我的理解:
1 首先从最尾端开始往前寻找两个相邻元素,令第一个元素为*i,第二个元素为*ii,且满足*i*ii,找到这样一组相邻的元素后。
2 再从最尾端开始往前检验,找出第一个大于*i的元素,令为*k,将i,k元素对调。
3 再将ii及ii之后的所有元素颠倒排列,此即所求之"下一个"排列。
prev_permutation()算法的思路也基本相同,只不过它们寻找的"拐点"不同,在next_permutation()算法中寻找的是峰值拐点,而在prev_permutation()算法中寻找的是谷值拐点。另外,在第二步中,prev_permutation()要找的是第一个小于*i的元素而不是第一个大于*i的元素。
具体例子,有空再举,现在时间太晚了:)
★生成组合的算法:
如下面截图所示,分全组合和r-组合两种情况。
这里有一段核心代码:
//--------------------------------------------------------
// Generate next combination (algorithm from Rosen p. 286)
//--------------------------------------------------------
public int[] getNext () {
if (numLeft.equals (total)) {
numLeft = numLeft.subtract (BigInteger.ONE);
return a;
}
int i = r - 1;
while (a[i] == n - r + i) {
i--;
}
a[i] = a[i] + 1;
for (int j = i + 1; j r; j++) {
a[j] = a[i] + j - i;
}
numLeft = numLeft.subtract (BigInteger.ONE);
return a; //这里返回的a数组,存储的就是下标的排列组合。
}
到这里,也许大伙会有一个疑问,假如要求的不是数字的排列组合,而是字符或字符串的排列组合呢?怎么办?其实很简单,你只要拿数组的下标来做排列组合,返回他们下标的排列组合,然后再到原数组中读取字符串值,就可以输出全部的排列组合结果。
VB.NET数据类型VB.NET中有12种不同的数据类型,可以分成三类:数值类型、文本类型和混合类型。数值类型是VB.NET数据类型的主要类型,共7种。数值类型的数据类型见下表。 数据类型表示方式取 值 范 围说 明整型Integer–2147483648~2147483647用于表示简单整数字节型Byte0~255用于简单算术运算。由于这个类型的变量可以在一个字节中存储,所以运算速度最快短整型Short–32768~32767是整型的一种形式,相对表示范围较小长整型Long–9223372036854775808~9223372036854775807是整型的一种形式,相对表示范围较大单精
度型Single–3.402823E38~–1.401298E-45(对于负数)和1.401298E-45~3.402823E38(对于正数)用于存放单精度浮点数双精
度型Double–1.79869313486232E308~–4.94065645841247E-324(对于负数)和4.94065645841247E-324~1.79869313486232E308(对于正数)用于存放双精度浮点数小数Decimal当小数位为0的时候,为–79228162514264337593543950335~
79228162514264337593543950335;当小数位为28的时候,为–7.9228162514264337593543950335~
7.9228162514264337593543950335常用于存储货币值 数值类型的数据类型 用于存放文本的数据类型有两个。文本类型的VB.NET数据类型见下表。 数 据 类 型表 示 方 式说 明字符串型String用于存放任何形式的字符串,包括一个字符或者多行字符字符型Char用于存放一个字符,它以0~65535之间数字的形式存储文本类型的数据类型 其中需要说明的是: (1) 对于String类型,可以存放任何形式的字符串,它可以是纯粹的文本,也可以是文本和数字的组合或者是数字、日期等。例如"This is a book. "和"12345"都是字符串。对于字符串类型的数据,可以进行相关的字符串操作,例如连接、截断等。 (2) 对于Char类型,可以存储的只是一个字符,注意,这个字符的存储编码必需是一个数字。在计算机系统中,可以显示很多符号(不仅仅是英文字母),为了能够正确地显示,国际上有通用的标准(例如Unicode编码),为每个字符设定了一个标准的数值来表示这个字符。其余的数据类型还有:Date数据类型、布尔数据类型和Object数据类型,其说明见下表。 数 据 类 型表 示 方 式说 明日期型Date必须用mm/dd/yyyy的格式表示,也可以存储时间(可以存储00:00:00~23:59:59之间的任何时间)布尔型Boolean取值为True和False对象型Object 其他数据类型 其中需要说明的是:在VB.NET中,对于Boolean类型的数据,当需要把布尔类型的值转换为数值类型的时候,会把True当成1来处理,把False当作0来处理。当需要把VB.NET数值类型的值转换为布尔类型的时候,会把0转换为False,而把其他的非0数值转换为True。
见下面的代码,自己换成真实的数据库及表即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Imports System.Data
Imports System.IO
Imports System.Data.OleDb
Module Module1
Public cn1 As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ACCESS数据库1.mdb") '定义连接1---这里请更改为实际数据库路径及名称
Public cn2 As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ACCESS数据库2.mdb") '定义连接2---这里请更改为实际数据库路径及名称
Public DataBaseRST1 As Integer '用来返回数据库执行结果
Public DataBaseRST2 As Integer '用来返回数据库执行结果
Public Function DataModify(ByVal str_cmd1 As String, ByVal str_cmd2 As String) As Boolean '进行数据库修改操作函数
Dim cmdinsert1 As New OleDbCommand
Dim cmdinsert2 As New OleDbCommand
Try
cmdinsert1.CommandText = str_cmd1
cmdinsert2.CommandText = str_cmd2
cmdinsert1.Connection = cn1
cmdinsert2.Connection = cn2
If cn1.State = ConnectionState.Closed Then cn1.Open()
If cn2.State = ConnectionState.Closed Then cn2.Open()
DataBaseRST1 = cmdinsert1.ExecuteNonQuery() '用来返回执行的结果
DataBaseRST2 = cmdinsert2.ExecuteNonQuery() '用来返回执行的结果
cn1.Close()
cn2.Close()
Return True
Catch ex As Exception
MessageBox.Show(Err.Description, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return False
End Try
End Function
End Module
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
DataModify("insert into aa values ('1','2')", "insert into aa values ('1','2')") '调用方法
End Sub
End Class
追问
这个方法我只能用于添加修改删除,请问,查询数据并且绑定到DGV怎么做?
回答
Public Function Search(ByVal cn1 As OleDb.OleDbConnection, ByVal cn2 As OleDb.OleDbConnection, ByVal str_cmd1 As String, ByVal str_cmd2 As String, ByVal DGV1 As DataGridView, ByVal DGV2 As DataGridView) As Boolean '查询 str_cmd1,str_cmd2---查询命令,DGV1,DGV2---DataGridView,用来显示数据的控件
Dim tb1 As New DataTable
Dim tb2 As New DataTable
Try
Dim ap1 As New OleDb.OleDbDataAdapter(str_cmd1, cn1)
ap1.Fill(tb1)
DGV1.DataSource = tb1
Dim ap2 As New OleDb.OleDbDataAdapter(str_cmd2, cn2)
ap2.Fill(tb2)
DGV2.DataSource = tb2
Return True
Catch ex As Exception
MessageBox.Show(Err.Description, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return False
End Try
根据时间变化绘制的,即时的,或许可以用chart图表控件,百度会出现微软网站的资料。
sin曲线永远是哪个样子,你是怎么变化?一般的移动,可以用offset控制向左平移,右边则增加点,看上去应该是在移动