题目描述】
设有N个选手进行循环比赛,其中N=2M,要求每名选手要与其他N-1名选手都赛一次,每名选手每天比赛一次,循环赛共进行N-1天,要求每天没有选手轮空。
【输入】
输入:M。
【输出】
输出:表格形式的比赛安排表。一行各数据间用一个空格隔开。
【输入样例】
3
【输出样例】
1 2 3 4 5 6 7 8
2 1 4 3 6 5 8 7
3 4 1 2 7 8 5 6
4 3 2 1 8 7 6 5
5 6 7 8 1 2 3 4
6 5 8 7 2 1 4 3
7 8 5 6 3 4 1 2
8 7 6 5 4 3 2 1
解题报告1
先初始化为a[0][0]
一本通书上原理
|
右上等左方阵加一半 |
等右上方方阵 |
等左上方阵 |
代码书上有
解题报告2
和差不多
|
右上等左方阵加一半 |
左下等左方阵加一半 |
等左上方阵 |
核心代码
//填写右下角
int i,j;
for(i=0;i<M;i++)
for(j =0;j<M;j++)
a[i+M][j+M]=a[i][j];
//填写右上角左下角
for(i=0;i<M;i++)
for(j =0;j<M;j++)
a[i+M][j]=a[i][j+M]=a[i][j]+M;
//完善代码
#include<iostream>
using namespace std;
int b[10005][10005];
int f(int a[10005][10005],int M)
{
//填写右下角
int i,j;
for(i=0;i<M;i++)
for(j =0;j<M;j++)
a[i+M][j+M]=a[i][j];
//填写右上角左下角
for(i=0;i<M;i++)
for(j =0;j<M;j++)
a[i+M][j]=a[i][j+M]=a[i][j]+M;
}
int p(int a[10005][10005],int M)
{
int i,j;
for(i=0;i<M;i++)
{
for(j =0;j<M;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
int main()
{
int i,j,N,a;
cin>>a;
N=1<<a;
// cout<<;
//int c[N];
b[0][0]=1;
for(i=1;i<=N/2;i*=2)
f(b,i);
p(b,N);
return 0;
}
解题报告3
规律也容易看出来
初始化
0 行 1 2 3 。。。N
1 奇偶交换1 2 1 4 3… N N-1
2 交换连续两个位置
4、奇偶交换
5、交换连续四个位置
6、奇偶交换
7、交换连续两个位置
8、奇偶交换
9、交换连续8个位置
10 奇偶交换
11 交换连续两个位置
12奇偶交换
13 交换连续4个位置
14、奇偶交换
15、交换连续2个位置
16、奇偶交换
17、交换连续16个位置
。
特别提醒交换连接的N个位置是以前N行的顺序为参考。
序号 |
规律 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
|
0 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
|
1 |
0 |
2 |
1 |
4 |
3 |
6 |
5 |
8 |
7 |
10 |
9 |
12 |
11 |
14 |
13 |
16 |
15 |
|
2 |
2 |
3 |
4 |
1 |
2 |
7 |
8 |
5 |
6 |
11 |
12 |
9 |
10 |
15 |
16 |
13 |
14 |
|
3 |
0 |
4 |
3 |
2 |
1 |
8 |
7 |
6 |
5 |
12 |
11 |
10 |
9 |
16 |
15 |
14 |
13 |
|
4 |
4 |
5 |
6 |
7 |
8 |
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
9 |
10 |
11 |
12 |
|
5 |
0 |
6 |
5 |
8 |
7 |
2 |
1 |
4 |
3 |
14 |
13 |
16 |
15 |
10 |
9 |
12 |
11 |
|
6 |
2 |
7 |
8 |
5 |
6 |
3 |
4 |
1 |
2 |
15 |
16 |
13 |
14 |
11 |
12 |
9 |
10 |
|
7 |
0 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
|
8 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
9 |
0 |
10 |
9 |
12 |
11 |
14 |
13 |
16 |
15 |
2 |
1 |
4 |
3 |
6 |
5 |
8 |
7 |
|
10 |
2 |
11 |
12 |
9 |
10 |
15 |
16 |
13 |
14 |
3 |
4 |
1 |
2 |
7 |
8 |
5 |
6 |
|
11 |
0 |
12 |
11 |
10 |
9 |
16 |
15 |
14 |
13 |
4 |
3 |
2 |
1 |
8 |
7 |
6 |
5 |
|
12 |
4 |
13 |
14 |
15 |
16 |
9 |
10 |
11 |
12 |
5 |
6 |
7 |
8 |
1 |
2 |
3 |
4 |
|
13 |
0 |
14 |
13 |
16 |
15 |
10 |
9 |
12 |
11 |
6 |
5 |
8 |
7 |
2 |
1 |
4 |
3 |
|
14 |
2 |
15 |
16 |
13 |
14 |
11 |
12 |
9 |
10 |
7 |
8 |
5 |
6 |
3 |
4 |
1 |
2 |
|
15 |
0 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
|
16 |
16 |
AC代码如下:
#include<iostream>
#include<cmath>
using namespace std;
int b[10005][10005];
//奇偶交换
int px(int a[10005][10005],int M,int row)
{
int i,j,t;
for(i=1;i<M;i+=2)
{
a[row][i-1]=a[row-1][i];
a[row][i]=a[row-1][i-1];
}
}
//输出二维数据
int p(int a[10005][10005],int M)
{
int i,j;
for(i=0;i<M;i++)
{
for(j =0;j<M;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
//初始化1-N二维数组第0行代码
int ps(int a[10005][10005],int M,int r)
{
int i,j;
for(i=0;i<M;i++)
a[r][i]=i+1;
}
//核心代码
//连续交换N个位置是以前N行为参考依据,old为前N行,
//now为当前要填充连续交换N位置,这时用m来代表连续交换m个数
int fx(int a[10005][10005],int N,int m,int old,int now)
{
int i,j,t;
for(i =0;i<N;i+=2*m)//以m为中心左右交换
{
j=i;
while(j<m+i)
{
a[now][j+m]=a[old][j];
a[now][j]=a[old][j+m];
j++;
}
}
}
//能被2整除的次数
//连续交换次数的判断,规律不好总结,也是种解题的难度之一
int ftwo(int a)
{
int t =0;
while(a%2==0)
{
a/=2;
t++;
}
if(t==0)
return 0;
else return pow(2,t);
}
int main()
{
int i,j,N,a;
cin>>a;
N=1<<a;
// cout<<;
//int c[N];
ps(b,N,0);
// for(i=1;i<=N/2;i*=2)
// f(b,i);
for(i = 1;i<N;i++)
{
int t = ftwo(i);//交换数量
if(t==0)
px(b,N,i);//<<endl;
else
fx(b,N,t,i-t,i);
}
p(b,N);
return 0;
}
2024家长会 | 2024/11/16 9:02:24 |
杨易校长在2023年春季家长会上的讲话.mp4 | 2023/5/13 20:03:04 |
学生用户-用户手册.pdf | 2022/9/13 18:00:43 |
2022年秋季学期普通高中助学申请工作通知202209 | 2022/9/12 21:38:36 |
省招生委员会关于做好2022年民汉双语招生工作的通知.pdf | 2022/5/25 15:38:44 |
贵州省普通高中学业水平合格性考试信息技术学科考试说明(试行).pdf | 2022/5/24 11:20:23 |
信息系统项目2 | 2022/3/8 11:25:20 |
信息系统与信息社会项目1 | 2022/3/1 15:29:37 |
省招生委员会关于做好2022年高职(专科)分类考试招生工作的通知.pdf | 2022/2/14 15:47:29 |
账号查询 | 2021/12/20 22:40:01 |
2021年普法网址 | 2021/12/20 22:39:09 |
高一新高考选科系统 | 2021/12/2 17:08:28 |
黔招委[2021]26号省招生委员会关于做好2022年普通高等学校考试招生报名工作的通知.pdf | 2021/11/15 15:11:08 |
2021.11健康问卷 | 2021/11/7 16:54:10 |
2021.11心理问卷 | 2021/11/7 16:52:02 |
问卷 | 2021/11/4 18:55:58 |
高考报名2021-11 | 2021/11/1 16:09:39 |
2021年贵州省教师教学技能大赛-第四届(2021)中小学教师微课应用暨竞赛活动的通知 | 2021/9/8 11:47:05 |
#输入三个数求最大值 | 2019/9/5 11:50:44 |
18微课学生帐号及密码 | 2019/9/1 8:08:52 |
二维码扫描app官方版 v3.2.5安卓版 | 2019/9/1 6:34:42 |
16 | 2019/8/31 19:21:35 |
作业4 | 2019/8/11 14:04:10 |
作业3 | 2019/8/9 17:24:05 |
偶数2-N.mp4 | 2019/8/5 19:21:47 |
流程图while输出1-N.mp4 | 2019/8/5 19:21:10 |
输入N个数求它们的最大值 | 2019/8/5 14:46:52 |
输入三个数求最大值.mp4 | 2019/8/5 13:34:53 |
作业1 | 2019/8/5 11:29:06 |
NOIP信息网-金牌教练董永建老师公益讲座.mp4 | 2019/8/4 21:02:41 |
清北学堂讲座二.mp4 | 2019/8/4 17:08:34 |
清北学堂讲座三.mp4 | 2019/8/4 17:08:00 |
清北学堂讲座四.mp4 | 2019/8/4 17:07:22 |
清北学堂讲座五.mp4 | 2019/8/4 17:06:46 |
清北学堂讲座六.mp4 | 2019/8/4 17:06:10 |
清北学堂讲座七.mp4 | 2019/8/4 17:05:11 |
清北学堂讲座八.mp4 | 2019/8/3 20:10:14 |
贵州2019高校招生录取时间安排一览 | 2019/7/2 13:15:39 |
志愿设置.mp4 | 2019/6/27 13:38:09 |
如何选择院校和专业.mp4 | 2019/6/27 13:37:40 |
如何理解平行志愿.mp4 | 2019/6/27 13:37:00 |
什么是梯度志愿 | 2019/6/27 13:36:13 |
录取批次顺序.mp4 | 2019/6/27 13:35:28 |
志愿填报安全提示.mp4 | 2019/6/27 13:34:30 |
【回看第一场】专家杨绍先教你填志愿 | 2019/6/27 12:16:16 |
【回看第二场】专家赵发毅教你填志愿 | 2019/6/27 11:10:06 |
【回看第三场】专家何厚波教你填志愿 | 2019/6/27 10:56:16 |
python编程之选择语句 | 2019/5/24 10:00:19 |
省名校长、名师工作室乡村工作站挂牌仪式暨培训活动举行 | 2019/4/16 14:40:25 |
我组开展信息技术竞赛 | 2019/4/3 18:51:47 |
关于做好2019年5月普通高中学生信息技术学科学业水平考试报名工作的通知 | 2019/4/3 10:46:24 |
高二信息课课外安排表 | 2019/3/14 14:56:13 |
考试1.26 | 2019/1/26 6:53:58 |
1418题目描述-猴子选大王 | 2019/1/22 15:35:30 |
信息学寒假培训通知 | 2019/1/8 16:18:18 |
网络技术应用电子书4-2-3.pd | 2018/12/26 11:23:48 |
4.1网站规划 | 2018/12/20 14:46:47 |
动态规划基础1 | 2018/12/2 16:11:59 |
动态规划基础 | 2018/12/2 8:24:26 |
4.1规划网站 | 2018/11/20 15:21:03 |
3.3网络的规划设计 | 2018/11/15 11:27:29 |
NOI LINUX Arbiter测评系统 | 2018/11/5 1:57:37 |
学生端安装虚拟NOI LINUX实现一机两用 | 2018/11/5 1:57:08 |
解题报告20181104 | 2018/11/5 1:54:02 |
金币 | 2018/10/23 17:52:42 |
问题求解 | 2018/10/10 17:05:57 |
10.10信息学考试 | 2018/10/9 22:42:18 |
初赛真题 | 2018/10/9 17:36:04 |
10月8日信息学考试 | 2018/10/8 15:16:09 |
2018年10月07日上机考试题 | 2018/10/7 13:12:09 |
矩阵上下左右 | 2018/10/6 17:04:58 |
杨辉三角 | 2018/10/6 11:35:08 |
C++语言基础 | 2018/10/6 10:16:58 |
初赛题卡模板 | 2018/10/5 22:12:23 |
10.4信息学考试 | 2018/10/4 19:18:39 |
2018信息学初赛知识点 | 2018/10/4 0:57:21 |
第三部分 数据结构 | 2018/9/20 19:19:27 |
基础算法 | 2018/9/20 19:16:58 |
第一部分 语言C++ | 2018/9/17 9:45:31 |
2015-2017提高组 | 2018/9/17 6:29:55 |
2010-2017普及组初赛试题 | 2018/9/17 6:27:24 |
初赛模拟题2015 | 2018/9/16 2:26:39 |
计算机基础知识100题 | 2018/9/12 0:58:14 |
关于举办2018年全国青少年信息学奥林匹克联赛通知 | 2018/9/12 0:08:43 |
C++初学培训 | 2018/9/11 2:07:06 |
分治算法比赛题目题解 | 2018/9/11 0:53:47 |
兴趣班问卷网址 | 2018/9/10 11:10:48 |
第1章 计算机基础知识 | 2018/9/8 16:45:39 |
信息学一本通刷题网站 | 2018/9/4 13:39:55 |
广东实验中学信息学奥赛评测系统 | 2018/9/4 13:38:31 |
CodeBlock编程软件 | 2018/9/4 13:36:06 |
2018年全市信息技术优质课评选活动获奖情况 | 2018/8/9 19:41:00 |
你已经上传的作业 | |||
序号 | 用户名 | 上传时间 | 作业链接 |
上传作业 |
你的基本信息 | |||
用户名: | |||
密码: | |||
确认密码: | |||
姓名: | |||
手机号: | |||
性别: | |||
族别: | |||
出生年月: | 2000-10-10 | ||
身份证号: | |||
年级: | |||
班级: | |||
电子邮箱 | 460608764@qq.com | ||