iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0
佛心分享-刷題不只是刷題

CPE C++ 刷題系列 第 18

CPE C++ 刷題 Day 18

  • 分享至 

  • xImage
  •  

今天來解YKL19(UVA11063):B2-Sequence*CPE48-23

B2-Sequence*CPE48-23

https://ithelp.ithome.com.tw/upload/images/20241002/20155574SSUHNp8rZ6.png

判斷是否為B2-Sequence
1.檢查數列是否嚴格遞增
2.用Set儲存並檢查seq[i] + seq[j]的和是否重複
3.如果嚴格遞增且所有和均為唯一,則該數列為 B2-Sequence;否則不是

#include <iostream>
#include <vector>
#include <set>
using namespace std;

int main(){
	int casenumber=1;
	int n;
	while(cin >> n){
		
		vector<int> seq(n);
		set<int> sums;
		bool isb2s = true;
		
		for(int i=0;i<n;i++){
			cin >> seq[i];
		}
		
		
		for(int i=1;i<n;i++){
			if(seq[i] <= seq[i-1]){
				isb2s = false;
				break;
			}
		}
		
		
		if(isb2s){
			for(int i=0;i<n;i++){
				for(int j=i;j<n;j++){
					int sum = seq[i] + seq[j];
					
					if(sums.count(sum)){
						isb2s = false;
						break;
					}
					sums.insert(sum);
				}
				if(!isb2s)break;
			}
		}
		
		if (isb2s) cout << "Case #" << casenumber << ": It is a B2-Sequence." << endl;
        else cout << "Case #" << casenumber << ": It is not a B2-Sequence." << endl;
        
		
		cout << endl;
		casenumber++;
	}
	return 0;
}


上一篇
CPE C++ 刷題 Day 17
下一篇
CPE C++ 刷題 Day 19
系列文
CPE C++ 刷題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言