Introduction
程式撰寫時,若寫得很亂或是很醜,極有可能導致無法找到錯誤的情況發生。在多人協作以及詢問他人問題時,好的程式碼風格可以使他人更快了解你在寫什麼。進而快速解決問題。
Detail
1. 基本排版
//首先,各層級之間應該要有 44 個空格。
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);cin.tie(0);
cout<<"Hello";
if(1==1){
cout<<"\n";
}
return 0;
}
//再者,有些東西可以按照個人習慣,例如大括號的位置。
//但,筆者主觀認為除了 main 以外千萬不要用第三種(如下),看了還滿痛苦的。
//(↓)第一種
int f(){
}
/*--------------------------------------分隔線--------------------------------------*/
//(↓)第二種
int f() {
}
/*--------------------------------------分隔線--------------------------------------*/
//(↓)第三種
int f()
{
}
2. 行內空格
//行內空格排版,有兩種做法。
//原則上,如果習慣將程式碼放很大的人用第一種,其餘可以自由選擇,然而我較習慣用第一種。
//(↓)第一種
for(int i=0;i<n;++i){
cout<<a[i]<<" ";
}
/*--------------------------------------分隔線--------------------------------------*/
//(↓)第二種
for(int i=0; i<n; ++i) {
cout << a[i] << " " ;
}
//如果有需求將多個簡單指令壓在一行的話,建議使用空格。
for(auto u:g[n]) if(u!=p){
dfs(n);
}
a=0; b=0; c=0;
3. 區塊間空格
//不同功能的區塊間可以空一行,可以讓後續向他人解說和整理自己思緒方便一些。
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
vector<int> g[N];
int h[N],ind[N];
long long ans=0;
void dfs(int n,int p){
int mx=0;
if(g[n].empty()){
return;
}
for(auto u:g[n]){
if(u!=p){
dfs(u,n);
mx=max(mx,h[u]);
}
}
h[n]=mx+1;
ans+=h[n];
}
int main(){
ios::sync_with_stdio(0);cin.tie(0);
int n;
cin>>n;
for(int i=1;i<=n;++i){
int cn;
cin>>cn;
for(int j=0;j<cn;++j){
int c;
cin>>c;
g[i].emplace_back(c);
ind[c]++;
}
}
int rt;
for(int i=1;i<=n;++i){
if(ind[i]==0){
rt=i;
break;
}
}
dfs(rt,0);
cout<<rt<<"\n"<<ans<<"\n";
}
以上就是主要的內容,希望大家寫的順利。