| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 612 人关注过本帖
标题:新的课题,大家来做啊!救急
取消只看楼主 加入收藏
xyz810607
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-3-18
收藏
 问题点数:0 回复次数:1 
新的课题,大家来做啊!救急

要求
有TXT文本文件(以下简称文本1),其内容格式为:

4012901 766
4012902 668
4012903 081
4012904 567
4012905 992
4012906 573
4012907 769
4012908 600
4012909 370
4012910 643
4012911 452
4012912 853
4012913 828
4012914 275
4012915 587
4012916 305
4012917 264
4012918 218
4012919 300
4012920 742
4012921 816
4012922 074
4012923 754
4013001 432
4013002 563
4013003 818
4013004 261
4013005 084
4013006 868
4013007 991
4013008 774
4013009 982
4013010 151
4013011 296
4013012 709
4013013 413
4013014 651
4013015 905
4013016 546
4013017 943
4013018 844
4013019 763
4013020 832
4013021 913
4013022 688
4013023 880
4013101 540
4013102 135
......
在窗口中设一导入文本按钮,点此按钮,程序将文本1导入至窗口中的一个文本框中。并可对该文本进行追加记录,更新。

首先,程序要能生成0-9这10个数的不重复全排列,共有10!(3628800)种排列.我们把其中的第一条记录0123456789命名为P1,把第二条记录1023456789明名为P2......把第N条记录命名为Pn.总共命名了3628800种排列,也叫3628800种P值.这些全排列不一定要真的生成出3628800条记录来,可以在内存中边生成边做相关的统计处理,进行"流水做业".在要求输出全排列表单时再输出.

导入文本1后,程序要对文本1进行如下统计处理:

第一步: 在P1排列方式下,将文本1中第8-10列的3位数从上往下依次进行位置标记.如:例一:
0 1 2 3 4 5 6 7 8 9
4012901 766 * *
4012902 668 * *
4012903 081 * * *
4012904 567 * * *
4012905 992 * *
4012906 121 * *
......

记为P1标记图.

这里为了方便说明,采用星号*在对应列上做标记的办法.在程序实际输出的标记图里,应将每一行的对应号码标记成红色.所有标记图平时只在内存中流水生成供统计用后既删除了,只有在要求输出指定的标记图表时才输出.在窗口中设一个P值复选框和MS复选框,填进P值(1-3628800)和MS值后,点击"输出标记图"按钮,相应P值和MS的标记图就显示在窗口中的一个文本框中.

生成P1标记图后,分别计算其中每一行上的"标记"间的位置模式值 MS.

如:
例一中第一行的位于6,7列上的2个标记间的"位置模式值MS=00.
例一中第二行的位于6,8列上的2个标记间的"位置模式MS=11.
例一中第三行的位于0,1,8列上的3个标记间的"位置模式=261.
......
位置模式值共有46种.

具体计算方法见后面的"位置模式值对照表".

计算出每一行上的MS后,分别统计46种MS的"相同两个MS间的最大纵向行间距" ZD.
如:例一中第一行的00模式与第六行的00模式的纵向行间距值=5(行值6-行值1=5).
在00模式的所有纵向行间距值中找出最大纵向行间距值ZD.记为00模式的ZD.
分别找出所有46种模式的ZD.
然后再找出00模式在P1标记图中最后一次出现的行,记下其行值为行值A,并用P1标记图中最后一行的行值减去行值A得到的数为00模式的 当前值DQ.
分别找出所有46种模式的DQ.

最后,计算出P1标记图中所有46种模式的ZD与DQ的比值BZ,公式: BZ=DQ/ZD(保留4位小数)

至此完成一个循环.

第二步: 接着做在P2排列方式下的循环.

第三步: 接着做在P3排列方式下的循环.
......

逐一完成3628800种排列下的所有循环.得到(3628800*46)166924800种BZ值。

最后输出一个TXT文本文件,按降序列出前N个最大的BZ,同时要标明其P值和MS(见例二).窗口中设一个N值(取1-100,默认10)复选框.

例二:

共12组

1 P MS BZ
2 52 1-3-2 2.680
3 44 1-4-2 2.252
4 59 2-1-1 2.237
5 43 1-2-2 2.210
6 11 2-6-1 2.014
7 63 1-1-1 2.003
8 43 1-4-2 1.952
9 60 2-1-1 1.897
10 56 1-6-2 1.808
11 85 1-1-1 1.789
12 07 1-5-2 1.693

(说明:这是在N=11时的情况,因为原来的程序错把第一行也算一组了,呵呵就这样将错就错吧)

********************************

附:位置模式值对照表
0123456789
*
凡是只有一个标记的,不论在哪一列上,模式值均等于0 (10)
0123456789
**
凡是只有相邻两列上的标记,不论在哪两列上,模式值均等于00 (9)
0123456789
***
凡是三个相邻列上的标记,不论在哪三列上,模式值均等于000 (8)
0123456789
* *
凡是只有间隔一列的两个标记,模式值均等于11 (8)
0123456789
* *
凡是只有间隔两列的两个标记,模式值均等于22 (7)
0123456789
* *
凡是只有间隔三列的两个标记,模式值均等于33 (6)
0123456789
* *
凡是只有间隔四列的两个标记,模式值均等于44 (5)
0123456789
* *
凡是只有间隔五列的两个标记,模式值均等于55 (4)
0123456789
* *
凡是只有间隔六列的两个标记,模式值均等于66 (3)
0123456789
* *
凡是只有间隔七列的两个标记,模式值均等于77 (2)
0123456789
* *
首尾两列上的两个标记,模式值为88 (1)
0123456789
* **
凡是前面一个标记,间隔一列,接着有两个标记的,模式值均等于112 (7)
0123456789
* **
凡是前面一个标记,间隔两列,接着有两个标记的,模式值均等于122 (6)
0123456789
* **
凡是前面一个标记,间隔三列,接着有两个标记的,模式值均等于132 (5)
0123456789
* **
凡是前面一个标记,间隔四列,接着有两个标记的,模式值均等于142 (4)
0123456789
* **
凡是前面一个标记,间隔五列,接着有两个标记的,模式值均等于152 (3)
0123456789
* **
凡是前面一个标记,间隔六列,接着有两个标记的,模式值均等于162 (2)
0123456789
* **
前面一个标记,间隔七列,接着有两个标记的,模式值均等于172 (1)
0123456789
** *
凡是前面两个标记,间隔一列,接着有一个标记的,模式值均等于211 (7)
0123456789
** *
凡是前面两个标记,间隔两列,接着有一个标记的,模式值均等于221 (6)
0123456789
** *
凡是前面两个标记,间隔三列,接着有一个标记的,模式值均等于231 (5)
0123456789
** *
凡是前面两个标记,间隔四列,接着有一个标记的,模式值均等于241 (4)
0123456789
** *
凡是前面两个标记,间隔五列,接着有一个标记的,模式值均等于251 (3)
0123456789
** *
凡是前面两个标记,间隔六列,接着有一个标记的,模式值均等于261 (2)
0123456789
** *
前面两个标记,间隔七列,接着有一个标记的,模式值等于271 (1)
0123456789
* * *
凡是前面一个标记,间隔一列,有一个标记,再间隔一列又有一个标记的,模式值均等于1-1-1 (6)
0123456789
* * *
凡是前面一个标记,间隔两列,有一个标记,再间隔两列又有一个标记的,模式值均等于1-2-2 (4)
0123456789
* * *
凡是前面一个标记,间隔三列,有一个标记,再间隔三列又有一个标记的,模式值均等于1-3-3 (3)
0123456789
* * *
凡是前面一个标记,间隔一列,有一个标记,再间隔两列又有一个标记的,模式值均等于1-1-2 (5)
0123456789
* * *
凡是前面一个标记,间隔一列,有一个标记,再间隔三列又有一个标记的,模式值均等于1-1-3 (4)
0123456789
* * *
凡是前面一个标记,间隔一列,有一个标记,再间隔四列又有一个标记的,模式值均等于1-1-4 (3)
0123456789
* * *
凡是前面一个标记,间隔一列,有一个标记,再间隔五列又有一个标记的,模式值均等于1-1-5 (2)
0123456789
* * *
前面一个标记,间隔一列,有一个标记,再间隔六列又有一个标记的,模式值等于1-1-6 (1)
0123456789
* * *
凡是前面一个标记,间隔两列,有一个标记,再间隔一列又有一个标记的,模式值均等于1-2-1 (5)
0123456789
* * *
凡是前面一个标记,间隔三列,有一个标记,再间隔一列又有一个标记的,模式值均等于1-3-1 (4)
0123456789
* * *
凡是前面一个标记,间隔四列,有一个标记,再间隔一列又有一个标记的,模式值均等于1-4-1 (3)
0123456789
* * *
凡是前面一个标记,间隔五列,有一个标记,再间隔一列又有一个标记的,模式值均等于1-5-1 (2)
0123456789
* * *
前面一个标记,间隔六列,有一个标记,再间隔一列又有一个标记的,模式值均等于1-6-1 (1)
0123456789
* * *
凡是前面一个标记,间隔两列,有一个标记,再间隔三列又有一个标记的,模式值均等于1-2-3 (3)
0123456789
* * *
凡是前面一个标记,间隔两列,有一个标记,再间隔四列又有一个标记的,模式值均等于1-2-4 (2)
0123456789
* * *
前面一个标记,间隔两列,有一个标记,再间隔五列又有一个标记的,模式值均等于1-2-5 (1)
0123456789
* * *
凡是前面一个标记,间隔三列,有一个标记,再间隔两列又有一个标记的,模式值均等于1-3-2 (3)
0123456789
* * *
前面一个标记,间隔三列,有一个标记,再间隔四列又有一个标记的,模式值均等于1-3-4 (1)
0123456789
* * *
凡是前面一个标记,间隔四列,有一个标记,再间隔两列又有一个标记的,模式值均等于1-4-2 (2)
0123456789
* * *
前面一个标记,间隔四列,有一个标记,再间隔三列又有一个标记的,模式值均等于1-4-3 (1)
0123456789
* * *
前面一个标记,间隔五列,有一个标记,再间隔两列又有一个标记的,模式值均等于1-5-2 (1)

说明:括号里面的数字是组数,仅供参考。

搜索更多相关主题的帖子: 课题 
2006-03-18 21:42
xyz810607
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-3-18
收藏
得分:0 
不复杂就不求人啊
2006-03-19 21:18
快速回复:新的课题,大家来做啊!救急
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.067929 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved