조회 수 508 추천 수 0 댓글 0

#include <stdio.h>

int chair_g[40]={0}; //고정석 위치
int chair_cut[40]={0}; //고정석으로 인해 끊긴 구간의 각 개수
int num[41]={0, 1, 2, 0}; //좌석 개수 별 경우의 수
int max;

int cut_set(int n, int m); //고정석으로 인해 끊긴 구간의 각 개수 계산
void num_set(void); //좌석 개수 별 경우의 수 계산
int cal(int m); //각 구간별 계산 값 곱하기
int main(void)
{
	int i, n, m, m2, result; //n=좌석의 수 m=고정석의 수

	scanf("%d %d", &n, &m);

	for(i=0; i<m; i++)
	{
		scanf("%d", &chair_g[i]);
	}

	if(m!=0)
	{
		m2=cut_set(n, m);
	}
	else
	{
		m2=1;
		max=n;
		chair_cut[0]=n;
	}

	if(max==0)
		printf("1");
	else
	{
		num_set();


		result=cal(m2);

		printf("%d", result);
	}
	/*printf("\ncut: ");
	for(i=0; i<m2; i++)
	{
		printf("%d ", chair_cut[i]);
	}
	printf("\n");
	printf("num: ");
	for(i=0; i<=max; i++)
		printf("%d ", num[i]);
	printf("\n");*/
	return 0;
}
int cut_set(int n, int m)
{
	int i, c=0;

	for(i=0; i<=m; i++)
	{
		if(i==0 && chair_g[i]!=1)
			chair_cut[c]=chair_g[i]-1;

		else if(i!=0 && i!=m)
			chair_cut[c]=chair_g[i]-chair_g[i-1]-1;

		else if(i==m && chair_g[i-1]!=n)
		{
			//printf("chair_g[%d]=%d=============\n", i, chair_g[i]);
			chair_cut[c]=n-chair_g[i-1];
		}	


		if(max<chair_cut[c])
			max=chair_cut[c];

		if(chair_cut[c]!=0) c++;
	}

	return c;
}
void num_set(void)
{
	int i;

	for(i=3; i<=max; i++)
	{
		num[i]=num[i-1]+num[i-2];
	}
}
int cal(int m)
{
	int i, result=1;

	for(i=0; i<m; i++)
	{
		result*=num[chair_cut[i]];
	}

	return result;
}



List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 글쓰기는 하루 5개, 댓글은 10개만 가능합니다. 좋은아빠되기 2019.02.15 744
공지 키보드 화살표값 출력 좋은아빠되기 2016.11.19 1502
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2847
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 11232
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 5169
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 8998
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 19440
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 38322
250 정올 기초다지기 출력 자가진단2 정승준 2018.01.06 172
249 정올 기초다지기 출력 자가진단6 정승준 2018.01.06 194
248 정올 기초다지기 출력 자기진단7 정승준 2018.01.06 178
247 정올 기초다지기 함수3 자가진단 5 남쌤꺼 좋은아빠되기 2014.08.16 510
246 정올 기초다지기(aA001-배열2 1) killerjack 2014.05.31 1465
245 정올 기초다지기(aA002-배열2 2) killerjack 2014.05.31 1300
244 정올 기초다지기(aA003-배열2 3) killerjack 2014.05.31 1447
243 정올 기초다지기(aA006-배열2 6) killerjack 2014.05.31 1230
242 정올 기초다지기(aA009-배열2 9) killerjack 2014.05.31 1336
241 정올 기초다지기(aB001-문자열1) killerjack 2014.09.20 493
240 정올 기초다지기(aB003-문자열1) killerjack 2014.09.27 444
239 정올 기초다지기(aB004-문자열1) killerjack 2014.09.27 396
238 정올 기초다지기(aB005-문자열1) killerjack 2014.09.27 378
237 정올 기초다지기(aB006-문자열1) killerjack 2014.09.27 470
236 정올 기초다지기(aB007-문자열1)ver 남쌤꺼. killerjack 2014.09.27 465
235 정올 기초다지기(aB007-문자열1)ver 내꺼. killerjack 2014.09.27 493
234 정올 기초다지기(aD002-함수2) killerjack 2014.06.07 1128
233 정올 기초다지기(aD003-함수3) killerjack 2014.07.12 828
232 정올 기초다지기(aD004-함수4) killerjack 2014.07.12 965
231 정올 기초다지기(aE002-함수2 2) killerjack 2014.07.26 602
Board Pagination Prev 1 ... 9 10 11 12 13 14 15 16 17 18 ... 26 Next
/ 26