12 14演算法作業

2021-10-12 02:45:42 字數 1538 閱讀 8830

1、時間複雜度分析

**:#include

#include

struct node;

int map[5][5] = ,,,

,,};int step[5][5] = ,,,

,,};int size = 0;

node* head = null;

node* tail = null;

node* tempnode = null;

void push(node* node)else

size++;

}node* pop()

size--;

return tempnode;void bsf()

//right

if (node->y + 1 <= 4 && step[node->x][node->y + 1] == 0 && map[node->x][node->y + 1] == 1)

//top

if (node->x - 1 >= 0 && step[node->x - 1][node->y] == 0 && map[node->x - 1][node->y] == 1)

//left

if (node->y - 1 >= 0 && step[node->x][node->y - 1] == 0 && map[node->x][node->y - 1] == 1)

}int dsf(int cx, int cy)

//bottom

if (cx + 1 <= 4 && step[cx + 1][cy] == step[cx][cy] + 1)

} //right

if (cy + 1 <= 4 && step[cx][cy + 1] == step[cx][cy] + 1)

} //top

if (cx - 1 >= 0 && step[cx - 1][cy] == step[cx][cy] + 1)

} //left

if (cy - 1 >= 0 && step[cx][cy - 1] == step[cx][cy] + 1)

} return 0;

int main()

printf("\n");

}//o(n2)

printf("逆序路徑為:\n");

//列印出路徑

if (dsf(0, 0) == 1)

else分析:遞迴部分的時間複雜度為o(n),但主函式中有雙重迴圈,時間複雜度為o(n2),所以這段**時間複雜度為o(n2)

2、揹包問題

**:#include

int max(int a,int b)

struct thinglist[101];

int dp[101][101]=;//初始化二維陣列

int main()

for(int i=1;i<=n;i++)

for(int j=list[i].w-1;j>=0;j--)

} printf("%d\n",dp[n][s]);}

執行結果:

12 1 4 磁碟監控

iostat 是i o statistics 輸入 輸出統計 的縮寫,iostat 工具可以對系統的磁碟操作活動進行監控,並匯報磁碟活動統計情況。除此外,它還能顯示 cpu的使用情況。其命令格式如下所示。iostat c d k m t v x n device all p device all i...

1214 線段覆蓋

貪心解法 解題思路 首先將線段端點調整為左端點小於 或等於 右端點 第二,根據右端點將線段從小到大排序 第三,掃瞄一遍,每次遇到的第乙個與當前的max不相交的即為最優選擇。實現 include includeusing namespace std const int n 101 struct nod...

1214 線段覆蓋 水

時間限制 1 s 空間限制 128000 kb 題目等級 gold 給定x軸上的n 0輸入描述 input description 輸入第一行是乙個整數n。接下來有n行,每行有二個空格隔開的整數,表示一條線段的二個端點的座標。輸出描述 output description 輸出第一行是乙個整數表示最...