回 帖 发 新 帖 刷新版面

主题:[讨论]请大家帮忙该一段小程序

有一组数据如下所示,第一列代表istep变化范围(1-5000),第二列 ia(1-30000),第三列ib(1-800),现在我想用一个三维数组H(istep,ia,ib)来标记这些数据,同一行数字定义的H=1,其他的H均为0.也就是说当istep=1时,ia=781,ib=455时H=1。我的主要目的就是能够将istep,ia,ib用一个函数联系起来,因为在程序后面要用这个函数作为进一步的判断条件。我写了一个程序:
program exam
implicit none
integer ia,ib,istep
integer ::h(5000,30000,800)
integer i



h=0
open (10,file='test.out')
do i=1,99999999
     read(10,*,end=2,err=2) istep,ia,ib
     h(istep,ia,ib)=1
enddo
2 continue
close(10)
do ia=1,30000
    do ib=1,800
         do istep=1,5000
              h(istep)=h(istep,ia,ib)
          enddo
         do ntel=1,nsteps
              if(h(ntel)/=0) then
                进行后面的程序
                -----------------
               endif
         enddo
         enddo
enddo
end
但是现在的问题是,定义的三维数组h太大了,程序不能运行, 请大家帮忙看看应该怎么办?先谢了

数据:
1     758           22
1     820           245
1     2050         399
1     2587         232
1     15733       34
1     18193       65
1     20718       256
2      820           245
2     2050         399
2      2587         232
2     20251        125
3     758           22
3     820           245
3     1817          625
3     2050          399
3     16723        555
3     18193       65
3     20718       256
---
----

回复列表 (共1个回复)

沙发

楼主是否应该在算法上考虑一下怎么解决呢? 我看不明白你的目的是什么.
你一定要用这么大的数组那就去买个服务器吧.
111.7G内存的服务器现在可能可以控制5~10万左右.

我来回复

您尚未登录,请登录后再回复。点此登录或注册