数学建模社区-数学中国

标题: 多维数组变一维数组,比较复杂,非诚勿看 [打印本页]

作者: iobug    时间: 2014-6-27 17:06
标题: 多维数组变一维数组,比较复杂,非诚勿看
多维数组变一维数组,规则如下:
1. arrA[a,b,c,d,e,f] = arrB[n];
2. 要求a<b<c<d<e<f<33;
例如:
arrA[ 0, 1, 2, 3, 4, 5] = arrB[0]
arrA[ 0, 1, 2, 3, 4, 6] = arrB[1]
arrA[ 0, 1, 2, 3, 4,32] = arrB[27]
arrA[ 0, 1, 2, 3, 5, 6] = arrB[28]
arrA[ 0, 1, 2, 3, 5, 7] = arrB[29]
arrA[ 0, 1, 2, 3, 5,32] = arrB[54]
arrA[ 0, 1, 2, 3, 6, 7] = arrB[55]
arrA[ 0, 1, 2, 4, 5, 6] = arrB[406]
arrA[ 0, 1, 2, 6, 7, 8] = arrB[1135]
arrA[ 0, 1, 2, 7, 8, 9] = arrB[1460]
arrA[ 0, 1, 3, 4, 5, 6] = arrB[4060]
arrA[ 0, 1, 3, 4, 5, 7] = arrB[5138]
arrA[ 0, 1, 4, 5, 6, 7] = arrB[7144]
求:1. arrB[854564]=arrA[a,b,c,d,e,f]中的abcdef值
2. arrB[N] = arrA[a,b,c,d,e,f]中的abcdef表达式或者程序



作者: snowwomanPeter    时间: 2014-7-14 14:42
本帖最后由 snowwomanPeter 于 2014-7-14 14:51 编辑

你的这个问题计算量太大啦,估计一般的计算机还有点吃不消。
  1. InitArr=0:5;
  2. Arr=[];k=0;
  3. change=0;index=0;
  4. while(InitArr(1)<28)
  5.     for i=1:length(InitArr)
  6.         if(InitArr(i)>32)
  7.             change=1;
  8.             index = i;
  9.             break;
  10.         end
  11.     end
  12.     if(change==1)
  13.         InitArr(index-1)=InitArr(index-1)+1;
  14.         for j=index:6
  15.             InitArr(j)=InitArr(index-1)+j-index+1;
  16.         end
  17.         change=0;
  18.     else
  19.         k=k+1;
  20.         Arr(k,:)=InitArr;
  21.         InitArr(6)=InitArr(6)+1;
  22.     end
  23. end
复制代码
你可以看一下,运行时间6分半,有点长
作者: 栀子流年5    时间: 2014-7-17 09:04
学习 学习  
作者: 弘道    时间: 2014-7-29 10:51
谢谢楼主……辛苦啦!………………
作者: 奥霸马2014    时间: 2014-8-1 11:42
看看。。。。。。




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5