數據結構與演算法代碼
① 數據結構與演算法實驗代碼
#include <cstdio>
int gold[225],medal[225],population[225];
int list[10];
int fir = 0;//用來判斷是否是第一個元素用的
void printresult(int check_number,int n);
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i = 0;i < n;i++)
scanf("%d%d%d",&gold[i],&medal[i],&population[i]);
for(int i = 0;i < m;i++)
{
int check_number;
scanf("%d",&check_number);
printresult(check_number,n);
}
printf("\n");
return 0;
}
void printresult(int check_number,int n)
{
for(int i = 0;i < n;i++)
{
if(gold[i]>gold[check_number])
list[1]++;
}
int result = ++list[1];//這里還要多加一個1,因為數組原來是0
int num = 1;
for(int i = 0;i < n;i++)
{
if(medal[i]>medal[check_number])
list[2]++;
}
list[2]++;
double gold_per = gold[check_number]*1.0/population[check_number];
for(int i = 0;i < n;i++)
{
if((gold[i]*1.0/population[i])>gold_per)
list[3]++;
}
list[3]++;
double medal_per = medal[check_number]*1.0/population[check_number];
for(int i = 0;i < n;i++)
{
if(medal[i]*1.0/population[i]>medal_per)
list[4]++;
}
list[4]++;
for(int i = 1;i < 5;i++)
{
if(list[i]<result)
{
result = list[i];
num = i;
}
}
for(int i = 1;i < 5;i++)
list[i] = 0;//對排名數組清零,因為之後要多次調用
if(!fir)
{
printf("%d:%d",result,num);//首個輸入前面不用空格
fir = 1;
}
else
printf(" %d:%d",result,num);
}
//如果超時的話還可以再優化,不過國家的數量比較少,應該不會
//優化就是把排名是1的話直接輸出,不進行之後運算
② 演算法與數據結構二叉樹的順序存儲代碼
1.應該是按照完全二叉樹存的吧。這樣的話,
2。根節點可以設置為1,(如果設成0的話,以後的所有值-1就可以了)
3,如果一個節點是x它左孩子是2*x,右孩子是2*x+1
4,所有葉子節點是,假設共有K個節點,這樣則最後一個有葉子節點的是k/2,所以葉子節點就是[k/2+1,k];
5,順序輸出就可以了。
③ 數據結構與演算法C語言的一段代碼
struct 不能這樣賦值吧
④ 《數據結構》演算法實現與分析高一凡中的源代碼要怎麼用
這個代碼可以直接用。用的時候必須把include中的文件也保存好。