Magic of David Copperfield II(奇偶性)

题目大意:这是一个魔术游戏,首先把你的手指放在一个左上角的格子里面,然后魔术师说你可以移动K1步,移动完之后,他会删除一些方格,并且说,你肯定不在这里,删除的方格不可以再去了,然后让你再走K2步,继续删除一些格子,直到就剩下一个格子为止,魔术师就可以说抓住你了,输出每个Ki和删除的格子。

分析:比较明显的利用了奇偶性质,所以每次走奇数步的话就可以了,删除的格子可以从左下角开始,把相同奇偶性质的都给删除即可,注意数N<=K<300,当N等于100的时候,K只能从100开始.............

代码如下:

===========================================================================================================================

#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std; const int MAXN = ; int main()
{
int i, j, N;
vector<int> G[MAXN*]; scanf("%d", &N); for(i=; i<=N; i++)
for(j=; j<=N; j++)
{
if(i+j- > N)
G[N+].push_back((i-)*N+j);
else
G[i+j].push_back((i-)*N+j);
} int cnt = N; for(i=N+; i>; i--)
{
printf("%d", cnt);cnt = (cnt& ? cnt+:cnt+);
for(j=; j<G[i].size(); j++)
printf(" %d", G[i][j]);
printf("\n");
} return ;
}
上一篇:Runnable和Callable接口辨析


下一篇:[UE4]Switch on String,根据字符串决定条件分支,类似于高级语言中的switch语句