9. CODE FOR #2
By Andy, 129623.
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
if(n<=2)cout<<n+(n*(n-1)/2)<<endl;
else cout<<4*n-6<<endl;
return 0;
}
13. CODE FOR #3
By Andy, 129623.
#include<iostream>
#include<algorithm>
using namespace std;
char t[11][11];
//解答
int ans[1000],solcnt=0;
//確認並儲存(tx,ty)->(nx,ny)解答對
void check(int x,int y,int dir,int
ndir){
int tx=x,ty=y;
switch(dir){
case 1:tx--;ty--;break;
case 2:tx--;ty++;break;
case 3:tx++;ty--;break;
case 4:tx++;ty++;break;
case 5:tx-=2;break;
case 6:ty+=2;break;
case 7:tx+=2;break;
case 8:ty-=2;break;
}
//如果不合法就退出
if(tx>8||ty>8||tx<=0||ty<=0)return;
int nx=tx,ny=ty;
switch(ndir){
case 1:nx--;break;
case 2:nx++;break;
case 3:ny--;break;
case 4:ny++;break;
}
if(t[x][y]==t[tx][ty]){
//為解答編碼成4位數字,左上角先存
ans[solcnt++]=100*(10*min(tx,nx)+min(
ty,ny))+10*max(tx,nx)+max(ty,ny);
}
}
注:dir: 1左上 2右上 3左下 4右下
5上x2 6右x2 7下x2 8左x2
ndir: 1上2下3左4右
14. CODE FOR #3 CONT.
By Andy, 129623.
void sort(){
sort(ans,ans+solcnt);
//避免輸重複解答
int last=ans[0];
for(int i=1;i<solcnt;i++)
if(ans[i]==last){
ans[i]=-1;
}else{
last=ans[i];
}
}
void print(){
for(int i=0;i<solcnt;i++){
if(ans[i]==-1)continue;
int from[2]={(ans[i]/100)/10,(ans[i]/100)%10};
int to[2]={(ans[i]%100)/10,(ans[i]%100)%10};
cout<<"("<<from[0]<<","<<from[1]<<"),";
cout<<"("<<to[0]<<","<<to[1]<<")"<<endl;
}
}