2775 - 부녀회장이 될테야
2775 문제 링크
접근법
처음에 howmany로 몇번 반복할지, A B는 각각 A층 호 이며 floor는 한층에 대한 벡터고 floors는 이중벡터로 아파트 전체를 나타낸다. 호수와 층수를 반복하면서 “A층의 B호에 살려면 (A-1)층의 1호부터 B호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다는 규칙을 반복한다. B-1의 이유는 층수는 0층부터있고 최솟값이 1이지만 호수는 1호수부터 시작하고 입력은 1이라서 1을 빼준다. 다시말해 1호수 = 행렬의 0번째 를 나타내기 위해서다.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int howmany,ho,many_floor;
cin >> howmany;
vector <int> floor;
vector< vector< int > > floors;
many_floor=14;
ho=14;
for(int i=1; i<= ho; i++)
{
floor.push_back(i);
}
floors.push_back(floor);
for(int i=1; i <=many_floor; i++)
{
floor[0] = 1;
for(int j=1; j<=ho; j++)
{
floor[j] = floors[i-1][j] + floor[j-1];
}
floors.push_back(floor);
}
for(int i=0; i < howmany; i++)
{
int A,B;
cin >> A;
cin >> B;
cout << floors[A][B-1] << endl;;
}
return 0;
}
결론
문제를 잘읽고 생각한다면 크게 어렵지 않은 문제인것 같다.