偶数=俩个奇素数之和,MDP=最大奇素数之差

img

    我真不知道哪里错了,求大佬解答

#include
#include
int main ()
{
   int i,j,k=0;
   int n=0;
   int a[1000],b[1500],MDP[1000];
   for(i=1;i<2000;i++)
    {
      for(j=2;jif(i%j==0)
          {k=0;break;}
          else k=1;
      }
      if(k==1&&i!=1)
          { 
          a[n]=i;
          n++;
        }
    }
    int m=0;
    for(i=4;i<2013;i++)
    {
      if (i%2==0)
        {
          b[m]=i;
          m++;
        }
    }
    
    
    int l,o,q,p,r=0;
    for(i=0;i<=m;i++)
    {
      for(j=0;j<=n;j++)
      {
          if(b[i]o=j-1;
      }
      for(l=o;l>=0;l--)
      {
          q=b[i]-a[l];
          for(p=0;p<=n;p++)
          {
            if(q==a[p])
            {
              MDP[r]=a[l]-q;
              r++;
              break;
            }
        }
      }
    }
    for(i=0;i<=r;i++)
    {
       printf("%d  ",MDP[i]);
    }    
}
    
  • 这篇博客: 强化学习笔记(二)动态规划法求解MDP中的 强化学习笔记(二)动态规划法求解MDP 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

  • 在MDP的内容中已经证明了一定存在best policy,并且递推公式是最终收敛到best policy的。那么动态规划是一个比较直观求解MDP的方法。我对于Dynamic Programming不是很了解,也没有刷过Leetcode的题目。很多文章在讲解的时候提到了“分治”,“递推/递归”,“子问题”等思想。个人比较粗糙地理解就是类似数值分析中的迭代,若我们有一个k步到k+1步的递推关系式,精确解又确定有,那么从任意一个初值,我们肯定能迭代到精确解。

    整讲课程最为凝练的内容应该就是下表:策略评估、策略迭代和价值迭代。为了将概念阐述得更清楚,David Sliver用了很多的公式、例子和图片,反而弄得像我这种不太聪明的听众更加糊涂了[汗]. 我认为很重要的是弄懂GridWorld那个经典的例子,其余的就迎刃而解了。

数组下标越界问题:

for(i=0;i<m;i++)
{
    for(j=0;j<n;j++)
    {
        if(b[i]<a[j])
        {
            o=j-1;
            break;
        }
      }
      for(l=o;l>=0;l--)
      {
          q=b[i]-a[l];
          for(p=0;p<=n;p++)
          {
            if(q==a[p])
            {
              MDP[r]=a[l]-q;
              r++;
              break;
            }
        }
      }
    }

如果答案对您有帮助,望采纳。