iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
自我挑戰組

cpe30天練習系列 第 16

cpe練習day16

  • 分享至 

  • xImage
  •  

今天是練習cpe的Jolly Jumpers題目

程式碼

#include <bits/stdc++.h>
using namespace std;

int main ()
{	
	int n;
	int a1 ,a2;
	
	while(cin >> n)
	{
		int a[n+1]={};
		int b,t=0;
		cin >> a1;
		for(int i = 1 ; i < n ;i++)
		{
			cin >> a2;
			b = abs(a1-a2);
			if(a[b] == 0 && b >= 1 && b < n)
			{
				a[b]=1;
				t++;			
			}
			a1=a2;
		}
		if(t == n-1)
		{
			cout << "Jolly" <<endl;
		}
		else
		{
			cout << "Not Jolly" <<endl;
		}
	} 
	return 0;
}

解題方向

  • int a[n+1]={}; -> 用來記錄「哪些差值已經出現過」,大小n+1
  • b = abs(a1-a2);-> 計算相鄰兩數的差值(取絕對值),因為有可能是小的減大的,所以用絕對值
  • if(a[b] == 0 && b >= 1 && b < n) -> 判斷差值合法而且第一次出現
  • a1=a2; -> 往前推進,下一輪比較

上一篇
cpe練習day15
系列文
cpe30天練習16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言