题解:AT_nyc2015_11 チーム戦
第一眼看数据范围
CODE:
#include<bits/stdc++.h>
using namespace std;
inline int C(n)
{
return (n*(n-1)*(n-2)/6);
}
int main()
{
int n;
cin>>n;
cout<<C(n)<<"\n";
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;j<=n;j++)
{
if(i!=j&&i!=k&&j!=k)
cout<<i<<" "<<j<<" "<<k<<"\n";
}
return 0;
}
其实也可以用
Second Code:
#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
int k=3,a,r[4];
int n;
void print()
{
for(int i=1;i<=k;i++)
printf("%d ",r[i]);
cout<<"\n";
}
int ans(int g)
{
return (g*(g-1)*(g-2)/6);
}
void dfs(int top)
{
if(top>k)
{print();a++;return;}
for(int i=r[top-1]+1;i<=n;i++)
{
r[top]=i;
dfs(top+1);
}
}
int main()
{
cin>>n;
cout<<ans(n)<<"\n";
dfs(1);
return 0;
}