算法实验报告1
发布地址(方便阅读):
T1
N = eval(input())
nums = [i for i in range(1, N + 1)]
res = []
def fn(n, st, cur):
if n < 0:
return
if n == 0:
res.append(cur)
return
for i in range(st, len(nums)):
fn(n - nums[i], i, cur + [nums[i]])
fn(N, 0, [])
print(res[1:len(res)-1])
T2
ls,k = eval(input())
st = sorted(ls)
print(st[k-1])
T3
ls = eval(input())
def calc(len_):
res = []
cmax = -0x3f3f3f3f
for i in range(1,len(ls)):
l = i-1
r = l+len_
if r>len(ls):
break
tmp_ls =ls[l:r]
print(tmp_ls)
tmp_sum = sum(tmp_ls)
if tmp_sum>=cmax:
res = tmp_ls
cmax = tmp_sum
return res
print(calc(2))
T4
有n名选手参加一个进行n-1天的比赛。每一名选手都需要和其他n-1名选手进行一场比赛,且每位选手每天只进行一场比赛。请为比赛安排日程。输入n,输出一个二维数组,令第i行、第j列的值代表第个选手在第j天的比赛。
#include<bits/stdc++.h>
int N;
struct node{
int whoami;
};
int mp[1024][1024];
inline void debug_print(){
for(int i=1;i<=16;++i){
for(int j=1;j<=16;++j){
std::cout<<mp[i][j]<<" ";
}
std::cout<<"\n";
}std::cout<<"\n";
}
inline void solve(int sz){
if(sz==2){
mp[1][1]=1;
mp[1][2]=2;
mp[2][1]=2;
mp[2][2]=1;
return;
}
solve(sz/2);
//复制当前数据到右下角
for(int i=1;i<=sz/2;++i){
for(int j=1;j<=sz/2;++j){
mp[i+sz/2][j+sz/2]=mp[i][j];
}
}
//扩展左上角和左下角
for(int i=1;i<=sz/2;++i){
for(int j=1;j<=sz/2;++j){
mp[i][j+sz/2]=mp[i][j]+sz/2;
mp[i+sz/2][j]=mp[i][j]+sz/2;
}
}
}
inline void print_res(int n){
using namespace std;
cout<<" ";
for(int i=1;i<=n-1;++i){
cout<<"D"<<i<<" ";
}
cout<<"\n";
for(int i=1;i<=N;++i){
for(int j=1;j<=n;++j){
if(mp[i][j] > N) cout<<"R "; // 只有当值大于N时才打印'R'
else cout<<mp[i][j]<<" ";
}
cout<<"\n";
}
}
int main(){
using namespace std;
// N=8;
std::cin>>N;
int n = N;
if((n & (n - 1))!=0){
n = pow(2, ceil(log2(n)));
// printf("xxx:%d",n);
}
solve(n);
// debug_print();
print_res(n);
}
输出结果:
=========2==========
D1
1 2
2 1
=====================
=========3==========
D1 D2 D3
1 2 3 R
2 1 R 3
3 R 1 2
=====================
=========4==========
D1 D2 D3
1 2 3 4
2 1 4 3
3 4 1 2
4 3 2 1
=====================
=========5==========
D1 D2 D3 D4 D5 D6 D7
1 2 3 4 5 R R R
2 1 4 3 R 5 R R
3 4 1 2 R R 5 R
4 3 2 1 R R R 5
5 R R R 1 2 3 4
=====================
=========6==========
D1 D2 D3 D4 D5 D6 D7
1 2 3 4 5 6 R R
2 1 4 3 6 5 R R
3 4 1 2 R R 5 6
4 3 2 1 R R 6 5
5 6 R R 1 2 3 4
6 5 R R 2 1 4 3
=====================
=========7==========
D1 D2 D3 D4 D5 D6 D7
1 2 3 4 5 6 7 R
2 1 4 3 6 5 R 7
3 4 1 2 7 R 5 6
4 3 2 1 R 7 6 5
5 6 7 R 1 2 3 4
6 5 R 7 2 1 4 3
7 R 5 6 3 4 1 2
=====================
=========8==========
D1 D2 D3 D4 D5 D6 D7
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
=====================
=========9==========
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15
1 2 3 4 5 6 7 8 9 R R R R R R R
2 1 4 3 6 5 8 7 R 9 R R R R R R
3 4 1 2 7 8 5 6 R R 9 R R R R R
4 3 2 1 8 7 6 5 R R R 9 R R R R
5 6 7 8 1 2 3 4 R R R R 9 R R R
6 5 8 7 2 1 4 3 R R R R R 9 R R
7 8 5 6 3 4 1 2 R R R R R R 9 R
8 7 6 5 4 3 2 1 R R R R R R R 9
9 R R R R R R R 1 2 3 4 5 6 7 8
=====================
=========10==========
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15
1 2 3 4 5 6 7 8 9 10 R R R R R R
2 1 4 3 6 5 8 7 10 9 R R R R R R
3 4 1 2 7 8 5 6 R R 9 10 R R R R
4 3 2 1 8 7 6 5 R R 10 9 R R R R
5 6 7 8 1 2 3 4 R R R R 9 10 R R
6 5 8 7 2 1 4 3 R R R R 10 9 R R
7 8 5 6 3 4 1 2 R R R R R R 9 10
8 7 6 5 4 3 2 1 R R R R R R 10 9
9 10 R R R R R R 1 2 3 4 5 6 7 8
10 9 R R R R R R 2 1 4 3 6 5 8 7
=====================
=========11==========
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15
1 2 3 4 5 6 7 8 9 10 11 R R R R R
2 1 4 3 6 5 8 7 10 9 R 11 R R R R
3 4 1 2 7 8 5 6 11 R 9 10 R R R R
4 3 2 1 8 7 6 5 R 11 10 9 R R R R
5 6 7 8 1 2 3 4 R R R R 9 10 11 R
6 5 8 7 2 1 4 3 R R R R 10 9 R 11
7 8 5 6 3 4 1 2 R R R R 11 R 9 10
8 7 6 5 4 3 2 1 R R R R R 11 10 9
9 10 11 R R R R R 1 2 3 4 5 6 7 8
10 9 R 11 R R R R 2 1 4 3 6 5 8 7
11 R 9 10 R R R R 3 4 1 2 7 8 5 6
=====================
=========12==========
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15
1 2 3 4 5 6 7 8 9 10 11 12 R R R R
2 1 4 3 6 5 8 7 10 9 12 11 R R R R
3 4 1 2 7 8 5 6 11 12 9 10 R R R R
4 3 2 1 8 7 6 5 12 11 10 9 R R R R
5 6 7 8 1 2 3 4 R R R R 9 10 11 12
6 5 8 7 2 1 4 3 R R R R 10 9 12 11
7 8 5 6 3 4 1 2 R R R R 11 12 9 10
8 7 6 5 4 3 2 1 R R R R 12 11 10 9
9 10 11 12 R R R R 1 2 3 4 5 6 7 8
10 9 12 11 R R R R 2 1 4 3 6 5 8 7
11 12 9 10 R R R R 3 4 1 2 7 8 5 6
12 11 10 9 R R R R 4 3 2 1 8 7 6 5
=====================
=========13==========
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15
1 2 3 4 5 6 7 8 9 10 11 12 13 R R R
2 1 4 3 6 5 8 7 10 9 12 11 R 13 R R
3 4 1 2 7 8 5 6 11 12 9 10 R R 13 R
4 3 2 1 8 7 6 5 12 11 10 9 R R R 13
5 6 7 8 1 2 3 4 13 R R R 9 10 11 12
6 5 8 7 2 1 4 3 R 13 R R 10 9 12 11
7 8 5 6 3 4 1 2 R R 13 R 11 12 9 10
8 7 6 5 4 3 2 1 R R R 13 12 11 10 9
9 10 11 12 13 R R R 1 2 3 4 5 6 7 8
10 9 12 11 R 13 R R 2 1 4 3 6 5 8 7
11 12 9 10 R R 13 R 3 4 1 2 7 8 5 6
12 11 10 9 R R R 13 4 3 2 1 8 7 6 5
13 R R R 9 10 11 12 5 6 7 8 1 2 3 4
=====================
=========14==========
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 R R
2 1 4 3 6 5 8 7 10 9 12 11 14 13 R R
3 4 1 2 7 8 5 6 11 12 9 10 R R 13 14
4 3 2 1 8 7 6 5 12 11 10 9 R R 14 13
5 6 7 8 1 2 3 4 13 14 R R 9 10 11 12
6 5 8 7 2 1 4 3 14 13 R R 10 9 12 11
7 8 5 6 3 4 1 2 R R 13 14 11 12 9 10
8 7 6 5 4 3 2 1 R R 14 13 12 11 10 9
9 10 11 12 13 14 R R 1 2 3 4 5 6 7 8
10 9 12 11 14 13 R R 2 1 4 3 6 5 8 7
11 12 9 10 R R 13 14 3 4 1 2 7 8 5 6
12 11 10 9 R R 14 13 4 3 2 1 8 7 6 5
13 14 R R 9 10 11 12 5 6 7 8 1 2 3 4
14 13 R R 10 9 12 11 6 5 8 7 2 1 4 3
=====================
=========15==========
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 R
2 1 4 3 6 5 8 7 10 9 12 11 14 13 R 15
3 4 1 2 7 8 5 6 11 12 9 10 15 R 13 14
4 3 2 1 8 7 6 5 12 11 10 9 R 15 14 13
5 6 7 8 1 2 3 4 13 14 15 R 9 10 11 12
6 5 8 7 2 1 4 3 14 13 R 15 10 9 12 11
7 8 5 6 3 4 1 2 15 R 13 14 11 12 9 10
8 7 6 5 4 3 2 1 R 15 14 13 12 11 10 9
9 10 11 12 13 14 15 R 1 2 3 4 5 6 7 8
10 9 12 11 14 13 R 15 2 1 4 3 6 5 8 7
11 12 9 10 15 R 13 14 3 4 1 2 7 8 5 6
12 11 10 9 R 15 14 13 4 3 2 1 8 7 6 5
13 14 15 R 9 10 11 12 5 6 7 8 1 2 3 4
14 13 R 15 10 9 12 11 6 5 8 7 2 1 4 3
15 R 13 14 11 12 9 10 7 8 5 6 3 4 1 2
=====================
=========16==========
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
2 1 4 3 6 5 8 7 10 9 12 11 14 13 16 15
3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14
4 3 2 1 8 7 6 5 12 11 10 9 16 15 14 13
5 6 7 8 1 2 3 4 13 14 15 16 9 10 11 12
6 5 8 7 2 1 4 3 14 13 16 15 10 9 12 11
7 8 5 6 3 4 1 2 15 16 13 14 11 12 9 10
8 7 6 5 4 3 2 1 16 15 14 13 12 11 10 9
9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8
10 9 12 11 14 13 16 15 2 1 4 3 6 5 8 7
11 12 9 10 15 16 13 14 3 4 1 2 7 8 5 6
12 11 10 9 16 15 14 13 4 3 2 1 8 7 6 5
13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4
14 13 16 15 10 9 12 11 6 5 8 7 2 1 4 3
15 16 13 14 11 12 9 10 7 8 5 6 3 4 1 2
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
=====================
直接照着抄为python
import math
N = None
mp = [[0 for _ in range(1024)] for _ in range(1024)]
def debug_print():
for i in range(1, 17):
for j in range(1, 17):
print(f"{mp[i][j]:2d}", end=" ")
print()
print()
def solve(sz):
if sz == 2:
mp[1][1] = 1
mp[1][2] = 2
mp[2][1] = 2
mp[2][2] = 1
return
solve(sz // 2)
# 复制当前数据到右下角
for i in range(1, sz // 2 + 1):
for j in range(1, sz // 2 + 1):
mp[i + sz // 2][j + sz // 2] = mp[i][j]
# 扩展左上角和左下角
for i in range(1, sz // 2 + 1):
for j in range(1, sz // 2 + 1):
mp[i][j + sz // 2] = mp[i][j] + sz // 2
mp[i + sz // 2][j] = mp[i][j] + sz // 2
def print_res(n):
print(" ", end="")
for i in range(1, n):
print(f"D{i} ", end="")
print()
for i in range(1, N + 1):
for j in range(1, n + 1):
if mp[i][j] > N:
print("R ", end="")
else:
print(f"{mp[i][j]:<4}", end="")
print()
def init():
global N
n = N
if (n & (n - 1)) != 0:
n = 2 ** math.ceil(math.log2(n))
solve(n)
# debug_print()
print_res(n)
if __name__ == "__main__":
for i in range(2, 17):
N = i
print(f"========={i}==========")
init()
print("=====================")