《算法-algorithm》第一章实验二 乱序检查
来源:互联网 发布:韩智慧知乎 编辑:程序博客网 时间:2024/06/10 13:00
Q:编写程序,接受参数m,n;将大小问m 的数组,打乱n次,而且每次打乱之前都将数组初始化为a[i]=i,打印一个m*m的表格,对于输出的【i,j】处的数字表示,i打乱后落到位置j的次数,预计正确的输出结果大约为m/n;
A:
//v乱序检查;void ShuffleTest(int m, int n){vector<int> a(m);//int *a = new int[m];int *mn=new int[n*m];int *sum = new int[m*m];for (int i = 0; i < m;i++){a[i] = i;}for (int i2 = 0; i2 < n*m;i2++){mn[i2] = 0;}for (int i3 = 0; i3 < m*m;i3++){sum[i3] = 0;}for (int j = 0; j < n;j++){random_shuffle(a.begin(), a.end());for (int p = 0; p < m;p++){mn[j*m+p] = a[p];}for (int q = 0; q < m;q++){a[q] = q;}}int record=0;for (int t = 0; t < m;t++){int temp = a[t];do {for (int col = 0; col < n; col++){if (mn[col*m + record] == temp){sum[t*m + record]++;}}record++;} while (record<m);record = 0;}for (int c = 0; c < m*m;c+=m){for (int c1 = 0; c1 < m;c1++){cout << sum[c+c1] << " ";}cout << endl;}}当m=10,n=1000时:输出结果
983 998 993 996 1057 1006 1011 1028 979 949
1016 1016 992 1025 991 960 956 1011 1000 1033
1012 943 1028 1024 943 1037 972 1009 1052 980
1004 1029 1017 1000 977 978 995 989 979 1032
968 1004 961 1011 1043 1028 1019 954 984 1028
1006 999 992 1032 1019 978 991 980 1008 995
987 932 1035 987 1034 1005 1017 998 972 1033
1066 1005 981 972 967 1035 1019 985 1024 946
942 1041 1004 953 984 1001 1008 1033 993 1041
1016 1033 997 1000 985 972 1012 1013 1009 963
阅读全文
0 0
- 《算法-algorithm》第一章实验二 乱序检查
- 《algorithm--算法》课后实验 第一章掷骰子问题
- 乱序检查
- 乱序算法
- 乱序字符串算法
- 实验二 分类算法实验
- 简单的乱序算法
- 洗牌算法:数组乱序
- 集合乱序算法shuffle
- 数据结构看书笔记(二)--算法Algorithm
- 【算法题】洗牌算法(乱序)
- 第一章实验
- 算法实验二 TEST #1
- 算法实验二 TEST #2
- 算法实验二 TEST #3
- Algorithm(算法
- 算法(algorithm):
- Algorithm算法
- 动态规划经典入门级题目*2及详解
- nodejs 后台server中的 sql server 分页 sql
- OSGI配置子系统的方式——feature配置子系统
- 正则表达式常用操作符
- 数学公式
- 《算法-algorithm》第一章实验二 乱序检查
- Servlet学习第三天
- vector和list的使用及区别
- 数据增强在卷积神经网络中的应用
- pwnable之memcpy
- Linux之Apache下日志文件error.log过大的解决方法
- Animation 过渡效果
- 解决虚拟机下的ubuntu不能上网的问题
- CONFIG_NO_HZ (aka dynamic tick functionality)