반응형
C++로 구현한 사다리 타기
아주 간단하고 무식한 알고리즘을 이용하여 만들어본 사다리 타기 게임입니다.
무식한 알고리즘이 떠오른 뒤부터는 비교적 쉬웠네요.
문제
http://isel.cs.pusan.ac.kr/~lik/DataStructures/assign1.htm - 부산대학교 정보컴퓨터공학부 이기준 교수님
아주 간단하고 무식한 알고리즘을 이용하여 만들어본 사다리 타기 게임입니다.
무식한 알고리즘이 떠오른 뒤부터는 비교적 쉬웠네요.
문제
http://isel.cs.pusan.ac.kr/~lik/DataStructures/assign1.htm - 부산대학교 정보컴퓨터공학부 이기준 교수님
#include<iostream>
#include<fstream>
using namespace std;
istream &fin=*new ifstream("ladder.in");
ostream &fout=*new ofstream("ladder.out");
class ladder{
public:
void init(int post, int crossbar);
void play(int post);
void print(int post);
private:
int point[10][100];
int post, crossbar;
int answer[100];
int a,b;
char ch;
};
void ladder::init(int post, int crossbar)
{
for(int i=0; i<post; i++)
{
for(int j=0; j<crossbar; j++)
point[i][j] = 0;
}
for(i=0; i<crossbar; i++)
{
fin>>a>>b;
point[a-1][b]=1;
point[a][b]=2;
}
};
void ladder::play(int post)
{
for(int post_p=0; post_p<post; post_p++)
{
int p=post_p;
for(int c=99; c>=0; c--)
{
if(point[p][c]==1 && point[p+1][c]==2)
p++;
else if(point[p][c]==2 && point[p-1][c]==1)
p--;
if(c==0)
answer[p]=post_p;
}
}
};
void ladder::print(int post)
{
for(int k=0; k<post; k++)
{
ch = answer[k]+65;
fout<<ch<<" ";
cout<<ch<<" ";
}
};
int main()
{
int post, crossbar;
fin >> post >> crossbar;
ladder first;
first.init(post,crossbar);
first.play(post);
first.print(post);
return 0;
}
#include<fstream>
using namespace std;
istream &fin=*new ifstream("ladder.in");
ostream &fout=*new ofstream("ladder.out");
class ladder{
public:
void init(int post, int crossbar);
void play(int post);
void print(int post);
private:
int point[10][100];
int post, crossbar;
int answer[100];
int a,b;
char ch;
};
void ladder::init(int post, int crossbar)
{
for(int i=0; i<post; i++)
{
for(int j=0; j<crossbar; j++)
point[i][j] = 0;
}
for(i=0; i<crossbar; i++)
{
fin>>a>>b;
point[a-1][b]=1;
point[a][b]=2;
}
};
void ladder::play(int post)
{
for(int post_p=0; post_p<post; post_p++)
{
int p=post_p;
for(int c=99; c>=0; c--)
{
if(point[p][c]==1 && point[p+1][c]==2)
p++;
else if(point[p][c]==2 && point[p-1][c]==1)
p--;
if(c==0)
answer[p]=post_p;
}
}
};
void ladder::print(int post)
{
for(int k=0; k<post; k++)
{
ch = answer[k]+65;
fout<<ch<<" ";
cout<<ch<<" ";
}
};
int main()
{
int post, crossbar;
fin >> post >> crossbar;
ladder first;
first.init(post,crossbar);
first.play(post);
first.print(post);
return 0;
}
반응형
'IT > Programming' 카테고리의 다른 글
VS2005 "디버깅 정보를 찾을 수 없거나 정보가 일치하지 않습니다." 에러 대처법 (2) | 2008.10.04 |
---|---|
8th ACM/ICPC 2008 Asia Regional-Seoul 대학생 프로그래밍 경시대회 (0) | 2008.09.29 |
무료 SVN 사용하기 - OpenSVN (2) | 2007.08.12 |
댓글