【華為機試線上訓練】Day 8
21點遊戲
題目描述
問題描述:給出4個1-10的數字,通過加減乘除,得到數字為24就算勝利
輸入:
4個1-10的數字。[數字允許重複,但每個數字僅允許使用一次,測試用例保證無異常數字]
輸出:
true or false
輸入描述:
輸入4個int整數
輸出描述:
返回能否得到24點,能輸出true,不能輸出false
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void check24(const vector<int> &nums, int index, double result, bool &isSuccess)
{
if (index == 4) //遞迴結束條件
{
if (abs(result - 24) < 1e-6)
isSuccess = true;
return;
}
for (int i = 0; i < 4; i++)
{
if (i == 0)
check24(nums, index + 1, result + nums[index], isSuccess);
else if (i == 1)
check24(nums, index + 1, result - nums[index], isSuccess);
else if(i==2)
check24(nums, index + 1, result * nums[index], isSuccess);
else
check24(nums, index + 1, result / nums[index], isSuccess);
if (isSuccess)
return;
}
}
int main()
{
vector<int>nums(4);
while (cin >> nums[0] >> nums[1] >> nums[2] >> nums[3])
{
sort(nums.begin(), nums.end());
bool isSuccess = false;
do {
check24(nums, 0, 0, isSuccess);
if (isSuccess)
break;
} while (next_permutation(nums.begin(), nums.end()));
if (isSuccess)
cout << "true" << endl;
else
cout << "false" << endl;
}
return 0;
}
成績排序
題目描述
查詢和排序
題目:輸入任意(使用者,成績)序列,可以獲得成績從高到低或從低到高的排列,相同成績
都按先錄入排列在前的規則處理。
例示:
jack 70
peter 96
Tom 70
smith 67
從高到低 成績
peter 96
jack 70
Tom 70
smith 67
從低到高
smith 67
Tom 70
jack 70
peter 96
輸入描述:
輸入多行,先輸入要排序的人的個數,然後分別輸入他們的名字和成績,以一個空格隔開
輸出描述:
按照指定方式輸出名字和成績,名字和成績之間以一個空格隔開
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
struct student{
string name;
int score;
};
bool cmp0(const student &a, const student &b){
// 從高到低排序
return a.score > b.score;
}
bool cmp1(const student &a, const student &b){
// 從低到高排序
return a.score < b.score;
}
int main(){
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int N, type;
while(cin >> N >> type){
vector<student> stud(N);
for(int i = 0; i < N; i ++){
cin >> stud[i].name >> stud[i].score;
}
if(type == 0)
stable_sort(stud.begin(), stud.end(), cmp0);
else
stable_sort(stud.begin(), stud.end(), cmp1);
for(int i = 0; i < N; i ++){
cout << stud[i].name << " " << stud[i].score << endl;
}
}
return 0;
}
字串萬用字元
題目描述
問題描述:在計算機中,萬用字元一種特殊語法,廣泛應用於檔案搜尋、資料庫、正規表示式等領域。現要求各位實現字串萬用字元的演算法。
要求:
實現如下2個萬用字元:
*:匹配0個或以上的字元(字元由英文字母和數字0-9組成,不區分大小寫。下同)
?:匹配1個字元
輸入:
萬用字元表示式;
一組字串。
輸出:
返回匹配的結果,正確輸出true,錯誤輸出false
輸入描述:
先輸入一個帶有萬用字元的字串,再輸入一個需要匹配的字串
輸出描述:
返回匹配的結果,正確輸出true,錯誤輸出false
#include<iostream>
using namespace std;
bool match(char *str1, char *str2)
{
if(*str1 == '\0' && *str2 == '\0')
return true;
else if(*str1 == '\0' || *str2 == '\0')
return false;
if(*str1 == '?')
return match(str1+1, str2+1);
else if(*str1 == '*')
return match(str1+1, str2) || match(str1+1, str2+1) || match(str1, str2+1);
else if(*str1 == *str2)
return match(str1+1, str2+1);
return false;
}
int main()
{
char str1[100], str2[100];
while(cin>>str1>>str2)
{
if(match(str1, str2))
cout<<"true"<<endl;
else
cout<<"false"<<endl;
}
return 0;
}
相關文章
- 【華為機試線上訓練】Day 10
- 【華為機試線上訓練】Day 11
- 【華為機試線上訓練】Day 6
- 【華為機試線上訓練】Day 7
- 【華為機試線上訓練】Day 9
- 【華為機試線上訓練】Day1
- 【華為機試線上訓練】Day2
- 【華為機試線上訓練】Day3
- 【華為機試線上訓練】Day4
- 華為機試 (11/8)
- 華為部分線上測試題
- 演算法訓練day2演算法
- 2024.7~8 訓練日記
- 雲端開爐,線上訓練,Bert-vits2-v2.2雲端線上訓練和推理實踐(基於GoogleColab)Go
- 華為鯤鵬HCIA考試-練習05
- 華為freebuds耳機藍芽搜尋不到怎麼辦 華為freelace連線不上藍芽
- 華為榮耀8X釋出會影片直播地址 華為榮耀8X釋出會直播線上觀看
- 華為暢享新機華為暢享8上架:搭載驍龍430 售價1299元!
- k線訓練營排名
- 史丹佛DAWNBench:華為雲ModelArts深度學習訓練全球最快深度學習
- 20240927 隨機訓練隨機
- 機率期望訓練
- CSAO×虎符安全訓練營 強強聯合,重磅上線
- 華為鯤鵬 DAY 4
- Yolov8訓練識別模型YOLO模型
- week8 數學訓練一
- ECS 7天實踐訓練營-day1
- 手把手教你基於華為雲,實現MindSpore模型訓練模型
- 牛客網--華為機試題
- 華為機試-取近似值
- 華為雲在香港為大模型訓練推理提供即開即用澎湃算力大模型
- 教育培訓機構試水線上教育平臺搭建的可行性
- k8s線上測試環境K8S
- 華為昇騰訓練營筆記-Ascend C運算元開發筆記
- 小雞老師華為版終於上線華為應用市場
- 線上教育培訓機構如何推廣自己
- 華為機試題刷題總結
- windows下yolov8訓練環境配置WindowsYOLO