贪心&动态规划

来源:互联网 发布:翻译英语的软件 编辑:程序博客网 时间:2024/06/02 04:15
//toj1731--四柱汉诺塔问题,动态规划#include<iostream>#define MAX 999999using namespace std;int dp[15],i,j;int min(int a,int b){    return a<b?a:b;   }int hanoi(int x){    int sum=1;    for(int i=1;i<=x;i++)        sum*=2;    return sum;}int main(){    for(i=1;i<=12;i++)//init        dp[i]=MAX;    dp[1]=1;    dp[2]=3;    for(i=3;i<=12;i++)    {        for(j=1;j<i;j++)           dp[i]=min(2*dp[j]+hanoi(i-j)-1,dp[i]);                      }    for(i=1;i<=12;i++)       cout<<dp[i]<<endl;    //system("pause");    return 0;   }
//toj1926--贪心--机器人捡垃圾,如果右边有垃圾就捡右边的,如果没有就往下捡,从而分层 #include<iostream>#include<memory.h>using namespace std;int main(){    int a[25][25]={0},i,j,x,y,num=0,sum;    while(cin>>x>>y)    {        if(x==-1&&y==-1)break;        a[x][y]=1;num++;//num为共有多少个垃圾         if(x==0&&y==0)        {            sum=0;            num=num-1;            //cout<<num<<endl;            while(num!=0)            {               int pos=1;               for(i=1;i<=24;i++)               {                   for(j=1;j<=24;j++)                       if(a[i][j]==1&&pos<=j)                           {a[i][j]=0;pos=j;num--;}                              }                sum++;            }            cout<<sum<<endl;              memset(a,0,sizeof(a));            num=0;                  }                  }    return 0;   }


原创粉丝点击