搜索
首页 教育/科学 学习帮助

关于编程的问题

希望懂得编程的高手能帮忙写个关于贪心算法的编程题,小弟感激不尽!

全部回答

2006-06-20

0 0
    #include #include #include #include #include #include #include #include "draw。
  h" using namespace std; #define max 40 #define PAI 3。  1416 #define CHA 0。001 int greedy(); int gra(); int n; double H; double W; double L; int view[max]; double r[max]; double x[max],y[max]; double good; double stack[max*max]; int si=0; int cmp(double a,double b) { return (a>b); } int main() { int i; char s[30]; ifstream in; cout>s; in。
    open(s); // in。open("c20。txt"); in>>n>>W>>H>>L; for(i=0;i>r[i]; ose(); // coutW) return 1; if(yy+rr>H) return 1; for(i=0;ipow(xx-x[i],2)+pow(yy-y[i],2)+CHA) return 1; } return 0; } int serch(int i) { int j; int k; double x1,y1,a,b,c,d,aa,bb,cc; stack[si++]=r[i]; stack[si++]=r[i]; //system("PAUSE"); for(j=0;j<n;j++) if(view[j]==1) { cc=pow(r[i]+r[j],2)-pow(r[i]-x[j],2); if(cc<0) continue; stack[si++]=r[i]; y1=y[j]+pow(cc, 0。
    5); stack[si++]=y1; } //system("PAUSE"); for(j=0;j<n;j++) if(view[j]==1) { cc=pow(r[i]+r[j],2)-pow(r[i]-y[j],2); if(cc<0) continue; x1=x[j]+pow(cc, 0。
    5); stack[si++]=x1; stack[si++]=r[i]; } //cout<<si<<"@"<<endl; //for(j=0;j<si;j++) // cout<<stack[j]<<endl; //system("PAUSE"); for(j=0;j<n;j++) if(view[j]==1) { for(k=j+1;k<n;k++) if(view[k]==1) { a=x[j]-x[k]; b=y[j]-y[k]; c=2*r[i]*(r[j]-r[k])+pow(r[j],2)-pow(r[k],2)+pow(x[k],2)-pow(x[j],2)+pow(y[k],2)-pow(y[j],2); c=c/(-2); c=c/a; d=b/a; aa=pow(d,2)+1; bb=(-2)*(d*c-d*x[j]+y[j]); cc=pow(y[j],2)+pow(c-x[j],2)-pow(r[i]+r[j],2); cc=pow(bb,2)-4*aa*cc; if(cc<0) continue; y1=(-bb+pow(cc,0。
    5))/2/aa; x1=c-d*y1; stack[si++]=x1; stack[si++]=y1; } } //cout<<si<<endl; //for(j=0;j<si;j++) // cout<<stack[j]<<endl; //system("PAUSE"); return 0; } int greedy() { int i; int i1; double x2,y2,all; for(i=0;i<n;i++) view[i]=0; good=0; all=0; for(i=0;i<n;i++) { serch(i); while(si!=0) { y2=stack[--si]; x2=stack[--si]; //cout<<init(x2,y2,r[i])<<endl; //system("PAUSE"); if(init(x2,y2,r[i])==0) { x[i]=x2; y[i]=y2; view[i]=1; si=0; break; } } } for(i=0;i<n;i++) if(view[i]==1) { all=all+PAI*pow(r[i],2); } good=all/W/H; return 0; } int gra() { int i; double xx,yy,zz; xx=100。
    0/W; yy=100。
    0/H; if(xx<yy) zz=xx; else zz=yy; openWindow(); resizeWindow(0,100,100,0); ezdSetColor(ezdBlue); ezdDrawRectangle(0,0,W*zz,H*zz); ezdSetColor(ezdGreen); for(i=0;i<n;i++) { if(view[i]==1) ezdDrawCircle(x[i]*zz,y[i]*zz,r[i]*zz); } viewWindow(); closeWindow(); return 0; }。

类似问题换一批

热点推荐

热度TOP

相关推荐

热点搜索 换一换

教育/科学
学习帮助
院校信息
升学入学
理工学科
出国/留学
职业教育
人文学科
外语学习
K12
学习帮助
学习帮助
举报
举报原因(必选):
取消确定举报