1 을 포함하면 이긴다.
2 나 3 은 실패할 운명이다.
4 승
5=2+3 승.
6=3+3 승.
7= 1+6|2+5|3+4 는 실패합니다.
8= 1+7|2+6|3+5|4+4 는 실패합니다.
9=2+7 승.
--
현행법을 총결하다.
만약 숫자가 진 수로 구성될 수 있다면, 그것은 이긴다.
4 = 2+2
5 = 2+3
6 = 3+3
이것은 아주 좋은 판단이다.
기타 수치는 분실된 숫자여야 합니다 (법에 따라)
그래서 당첨번호를 찾아내서 초기 조건에 당첨번호가 있는지 판단하기만 하면 됩니다.
만약 있다면 우리는 졌다.
그렇지 않다면, 네가 이긴다. (만약 숫자가 지는 것과 이기는 것으로 나뉜다.)
--
# include & ltstdio.h & gt
# include & ltconio.h & gt
# include & ltwindows.h & gt
Int main ()
{
Int max=0, winnum[ 1000 1], input[ 10][2], I
메셋 (winnum,-1,10001);
For(I = 0;; 나< 10; I++)
{
Scanf("%d %d ",& 입력 [i][0],& 입력 [I] [1]);
If (입력 [I] [0] > 최대)
Max = input [I] [0];
If (input [I] [1] > 최대)
Max = input [I] [1];
}
/10 그룹 수를 입력하여 최대 수를 찾습니다.
Winnum [1] = 0;
Winnum [2] =1;
Winnum [3] =1;
Winnum [4] = 0;
For (I =1; 나 & ltmaxi++)
Max 보다 작은 모든 당첨번호를 찾으십시오.
If(winnum[i]! = 0)
{
Winnum [I] =1;
//printf("i = %d\n ",I);
For(j = 2;; J & ltmaxj++)
{
If(winnum[j] == 1)
{
Winnum [I+j] = 0; //하나의 당첨번호는 두 개의 낙선 번호로 구성되어 있습니다.
//printf("%d\n ",I+j);
}
}
}
}//당첨번호 판단
For (I =1; 나< 10; I++)
{
만약 (! Winnum [input [I] [0] | |! Winnum [input [I] [1]) 을 참조하십시오
//담소가 당첨번호를 가지고 있다면 우리는 당첨 전략이 없다.
Printf ("no \ n");
기타
//그렇지 않으면 담웃음은 두 개의 실패한 숫자가 있고, 우리는 승리의 전략을 가지고 있다.
Printf ("yes \ n");
}
0 을 반환합니다
}
//위 절차의 전제는 그래픽이 두 가지밖에 없다는 것을 증명하는 것이다: 지는 것과 이기는 것.
//LZ 스스로 증명해 주세요. 나는 대충 증명했지만 수학 언어로 표현할 수 없었다.
--
당신은 내가 어느 부분에 주석을 달길 원합니까?