贪心&动态规划
来源:互联网 发布:翻译英语的软件 编辑:程序博客网 时间: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; }