1. 題目描述
給定一32
位int數a
,判斷一下
a*a
和a*a*a
誰比較大。
輸入
多樣例輸入,每個樣例一行,為乙個
int數。
輸出
每個樣例輸出一行。
如果a*a = a*a*a
,輸出=;如果
a*a > a*a*a
,輸;如果
a*a < a*a*a
,輸出<
。sample input
2 -2
sample output
>
思路:可以提高演算法速度的方法,是將a與1還有0進行比較,對不同的a進行分類。不用計算平方與立方的具體值就能進行運算
n個人想玩殘酷的死亡遊戲,遊戲規則如下:
n個人進行編號,分別從1到
n,排成乙個圈,順時針從
1開始數到
m,數到
m的人被殺,剩下的人繼續遊戲,活到最後的乙個人是勝利者。
請輸出最後乙個人的編號。輸入n
和m值。輸出勝利者的編號。
5 3
4第一輪:3被殺
第二輪:1被殺
第三輪:5被殺
第四輪:2被殺
思路:本題可以利用動態陣列或鍊錶實現
**:鍊錶:
#include
#include
using namespace std;
int main() {
intn, m;
cin>> n >> m;
vectora;
for(int i = 0; i < n; ++i)
a.push_back(i+ 1);
vector::iteratorit = a.begin();
while(a. size() > 1) {
for(int i = 1; i < m; ++i) {
it++;
if(it == a.end())
it= a.begin();
it= a.erase(it);
if(it == a.end())
it= a.begin();
cout<< a[0];
動態陣列:
#include
#include
using namespace std;
int main() {
int n, m;
cin>> n >> m;
vectora;
for(int i = 0; i < n; ++i)
a.push_back(i+ 1);
vector::iteratorit = a.begin();
while(a. size() > 1) {
for(int i = 1; i < m; ++i) {
it++;
if(it == a.end())
it= a.begin();
it= a.erase(it);
if(it == a.end())
it= a.begin();
cout<< a[0];
演算法分析3
1.問題 描述演算法問題,首選形式化方式 數學語言 其次才是非形式化方式 日常語言 寫出兩種檢索演算法 在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0.2.解析 問題的理解和推導,可用電子版直接在此編寫,也可用紙筆推導,拍照嵌入本文件 1 順序查...
演算法分析設計 作業3 檢索演算法
寫出兩種檢索演算法 在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0。一 順序查詢 順序查詢也稱為線性查詢,屬於無序查詢演算法,適用於儲存結構為順序結構或鏈式儲存的線性表。從資料結構線性表的一端開始,順序掃瞄,依次將掃瞄到的節點關鍵字與給定查詢的x...
演算法設計與分析 實驗3
一 實驗目的和要求 學習程式設計實現深度優先搜尋狀態空間樹求解實際問題的方法,著重體會求解第乙個可行解和求解所有可行解之間的差別。加深理解回溯法通過搜尋狀態空間樹 同時用約束函式剪去不含答案狀態子樹的演算法思想,會用蒙特卡羅方法估計演算法實際生成的狀態空間樹的結點數。二 實驗環境 實驗裝置 vsia...