알고리즘 디자인 과 분석: 제2 장 재 귀 2.4 라운드 게임
3411 단어 알고리즘 설계 및 분석
/*
:12 , ,
7 , “1”。 ,
, ?
:
:1~n . n+1 1
1) :
{Y: , 1
{N:
:【 】
6 3 1( )
12( ) 7( ) 1
:
1
12
:【 】
8 5 3( )
100 9999 98
10000 10000 10000
0 0 0
:
1
93
2019
*/
/*
:
1 if(pVisArr[iNextNum] == 0)// ,
2 // 0, ; , , : ,
memset(pVisArr,0,sizeof(pVisArr));
3 if(iNextNum > iTotalNum)// 1 0
{
iNextNum = 1;
}
*/
#include <stdio.h>
#include <string.h>
const int MAXSIZE = 10000 + 2;
int lastNumber(int iTotalNum,int iKickNum,int iStartNum)
{
int iRemainNum = iTotalNum;
int iCount = 1;
int pVisArr[MAXSIZE];
// 0, ; , , : ,
memset(pVisArr,0,sizeof(pVisArr));
int iNextNum;
while(iRemainNum > 1)
{
iNextNum = (iStartNum + 1);// , : 1~n, iTotalNum+1 iTotalNum
if(iNextNum > iTotalNum)// 1 0
{
iNextNum = 1;
}
if(pVisArr[iNextNum] == 0)// ,
{
iCount++;
if(iCount == iKickNum)//
{
pVisArr[iNextNum] = 1;// , 0
iCount = 0;
iRemainNum--;
}
}
iStartNum = iNextNum;
}
for(int k = 1 ; k <= iTotalNum ; k++ )
{
if(pVisArr[k] == 0)
{
return k;
}
}
return -1;
}
int lastNumber_firstDel(int iTotalNum,int iKickNum,int iStartNum)
{
int iRemainNum = iTotalNum - 1;//
int iCount = 0;
int pVisArr[MAXSIZE];
// 0, ; , , : ,
memset(pVisArr,0,sizeof(pVisArr));
pVisArr[iStartNum] = 1;
int iNextNum;
while(iRemainNum > 1)
{
iNextNum = (iStartNum + 1);// , : 1~n, iTotalNum+1 iTotalNum
if(iNextNum > iTotalNum)// 1 0
{
iNextNum = 1;
}
if(pVisArr[iNextNum] == 0)// ,
{
iCount++;
if(iCount == iKickNum)//
{
pVisArr[iNextNum] = 1;// , 0
iCount = 0;
iRemainNum--;
}
}
iStartNum = iNextNum;
}
for(int k = 1 ; k <= iTotalNum ; k++ )
{
if(pVisArr[k] == 0)
{
return k;
}
}
return -1;
}
void process()
{
int iTotalNum,iKickNum,iStartNum;
while(EOF != scanf("%d %d %d",&iTotalNum,&iKickNum,&iStartNum) )
{
if(iTotalNum == 0 && iKickNum == 0 && iStartNum == 0)
{
break;
}
//printf("%d
",lastNumber(iTotalNum,iKickNum,iStartNum));
printf("%d
",lastNumber_firstDel(iTotalNum,iKickNum,iStartNum));
}
}
int main(int argc,char* argv[])
{
process();
getchar();
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디 제 스 트 라 알고리즘 으로 권한 부여 그림 의 가장 짧 은 경 로 를 구하 십시오.Description 디 제 스 트 라 알고리즘 으로 나머지 모든 노드 의 가장 짧 은 경 로 를 구하 세 요. Input 먼저 100 보다 작은 정수 n 을 입력 한 다음 에 그림 의 인접 행렬 (10000 은 무...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.