矩阵
【问题描述】
把 1∼2020放在 2×1010的矩阵里。要求同一行中右边的比左边大,同一列中下边的比上边的大。一共有多少种方案?
答案很大,你只需要给出方案数除以 2020的余数即可。
为了方便检查代码是否正确,我们先看1—6的情况:
#include<stdio.h>
#define N 6//1-6的情况
int count=0;//计数器
int a[N]={
0};//标志数组,a[i]=1说明数字i已被放置
int valid(int b[N],int index,int x)//判断b[index]上存放x是否合法
{
if(index<N)//下标不能超界
{
if(index<N/2&&b[index-1]>=x)//第一行
return 0;
if(index>N/2&&b[index-1]>=x)//第二行
return 0;
if(index>=N/2&&b[index-N/2]>=x)//保证同一列下面比上面大
return 0;
return 1;