题目描述
给定一个2*n的矩阵,每个单元点面积为1,且拥有独立编号。当处于坐标(x,y)时,可以向(x-1,y),(x+1,y),(x,y-1),(x,y+1)移动。
现在想考考你,从任意一点出发,每个单元正好经过一次的方案数是多少?
输入
题目包含多组测试样例。每行输入一个n(1<=n<=100000)。
输出
每组样例输出一个数代表方案数。
样例输入 Copy
2
样例输出 Copy
8
思路:
画图法…
第一组: 1
第二组: 2 + 2
第三组: 2 + 4 + 2
第四组: 2 + 6 + 4 + 2
以此类推:
第N组就是: 2 +2 * ( N - 1 )+ 2 * ( N - 2 )+ ··· ··· 6 + 4 + 2
AC代码:
#include<bits/stdc++.h>
using namespace std;
long long n,d;
long long dfs(int x){
long long y=0;
long long b;
if(x==1){
y=1;
}if(x==2){
y=2+2;
}if(x>=3){
y=2+4+2;
}b=6;
while(x>3){
x--;
y+=b;
b+=2;
}
y*=2;
return y;
}
int main(){
while(cin>>n){
d=dfs(n);
cout<<d<<endl;
}
return 0;
}
不知道我这歪门邪道对不对。。。