Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

大牛给看看,超内存,怎么改啊?想不出来.大牛指点一下(附代码)

Posted by sdau_085090 at 2010-08-10 21:10:27 on Problem 1789
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;

#define infinity 1000
int n;
int **g;//存储权值
char **s;//输入字符串
int *lowcost;
int *closeset;
bool *used;
int Prime(int **g,int n){
  
   int minlen=0;
   lowcost=new int[n];
   closeset=new int[n];
   used=new bool[n];
   int i,j,k;
   for(i=0;i<n;i++){
      lowcost[i]=g[0][i];
	  closeset[i]=0;
	  used[i]=0;
   }
   used[0]=1;
   for(i=1;i<n;i++){
     j=0;
	 while(used[j])j++;
	 for(k=0;k<n;k++){
	   if(!used[k]&&lowcost[k]<lowcost[j]) j=k;
	 }
	 used[j]=1;
	 minlen+=lowcost[j];
	 for(k=0;k<n;k++){
		 if(!used[k]&&g[j][k]<lowcost[k]){
			 lowcost[k]=g[j][k];
		     closeset[k]=j;
		 }
	 }
   }
   return minlen;
   delete lowcost,closeset,used;


}

int main(){
int i,j,k;
while(cin>>n&&n!=0){
s=new char*[n];
g=new int*[n];
for(i=0;i<n;i++)s[i]=new char[7];
for(i=0;i<n;i++)g[i]=new int[n];
for(i=0;i<n;i++)cin>>s[i];
for(i=0;i<n;i++){
	for(j=0;j<n;j++){
	  if(i!=j) g[i][j]=infinity;
	  else g[i][j]=0;
	}
}
for(i=0;i<n;i++){
	int temp;
	for(j=i+1;j<n;j++){
	  temp=0;
	  for(k=0;k<7;k++){
	     if(s[i][k]!=s[j][k])temp++;
	  }
	  g[i][j]=temp;
	}
}

cout<<"The highest possible quality is 1/"<<Prime(g,n)<<"."<<endl;
}
for(i=0;i<n;i++)delete g[i];
for(i=0;i<n;i++)delete s[i];
return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator