線性表

RonChen發表於2024-08-05

P5727

#include <cstdio>
#include <vector>
using std::vector;
int main()
{
	int n; scanf("%d", &n);
	vector<int> ans; // 定義一個裡面元素是int型別的動態陣列
	// 一般不用vector<char> vector<bool>
	// 此時是沒有ans[0]...的
	while (n!=1) {
		// 把n新增進ans
		ans.push_back(n);
		if (n%2==0) {
			n/=2;
		} else {
			n = 3 * n + 1;
		}
	}
	// 把n新增進ans
	ans.push_back(n);
	// ans.size()
	
	// 儘量不要對size()直接運算,比如 xxx.size()-1
	// for (int i=0;i<ans.size();i++) { printf("%d ",ans[i]); }
    // for (int i=ans.size()-1;i>=0;i--) { printf("%d ",ans[i]); }
    // 儘量不要像上面這樣寫ans.size()-1
    
	int len = ans.size();
	for (int i=len-1; i>=0; i--) {
		printf("%d ", ans[i]);
	}
	return 0;
}

相關文章