조회 수 465 추천 수 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 488
공지 키보드 화살표값 출력 좋은아빠되기 2016.11.19 1244
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2559
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 10530
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 4904
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 8488
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 19126
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 38044
250 정올 기초다지기 출력 자가진단2 정승준 2018.01.06 143
249 정올 기초다지기 출력 자가진단6 정승준 2018.01.06 155
248 정올 기초다지기 출력 자기진단7 정승준 2018.01.06 156
247 정올 기초다지기 함수3 자가진단 5 남쌤꺼 좋은아빠되기 2014.08.16 483
246 정올 기초다지기(aA001-배열2 1) killerjack 2014.05.31 1441
245 정올 기초다지기(aA002-배열2 2) killerjack 2014.05.31 1287
244 정올 기초다지기(aA003-배열2 3) killerjack 2014.05.31 1427
243 정올 기초다지기(aA006-배열2 6) killerjack 2014.05.31 1205
242 정올 기초다지기(aA009-배열2 9) killerjack 2014.05.31 1317
241 정올 기초다지기(aB001-문자열1) killerjack 2014.09.20 480
240 정올 기초다지기(aB003-문자열1) killerjack 2014.09.27 421
239 정올 기초다지기(aB004-문자열1) killerjack 2014.09.27 380
238 정올 기초다지기(aB005-문자열1) killerjack 2014.09.27 351
237 정올 기초다지기(aB006-문자열1) killerjack 2014.09.27 451
236 정올 기초다지기(aB007-문자열1)ver 남쌤꺼. killerjack 2014.09.27 455
235 정올 기초다지기(aB007-문자열1)ver 내꺼. killerjack 2014.09.27 480
234 정올 기초다지기(aD002-함수2) killerjack 2014.06.07 1110
233 정올 기초다지기(aD003-함수3) killerjack 2014.07.12 809
232 정올 기초다지기(aD004-함수4) killerjack 2014.07.12 931
231 정올 기초다지기(aE002-함수2 2) killerjack 2014.07.26 588
Board Pagination Prev 1 ... 9 10 11 12 13 14 15 16 17 18 ... 26 Next
/ 26