蓝桥杯真题,求第二空的解析?对一个方阵转置,就是把原来的行号变列号,原来的列号变行号例如,如下的方阵:1 2 3 45

danielleo_72022-10-04 11:39:541条回答

蓝桥杯真题,求第二空的解析?
对一个方阵转置,就是把原来的行号变列号,原来的列号变行号
例如,如下的方阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
转置后变为:
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
但,如果是对该方阵顺时针旋转(不是转置),却是如下结果:
13 9 5 1
14 10 6 2
15 11 7 3
16 12 8 4
下面的代码实现的功能就是要把一个方阵顺时针旋转.
void rotate(int* x,int rank)
{
int* y = (int*)malloc(___________________); // 填空
for(int i=0; i

已提交,审核后显示!提交回复

共1条回复
贪睡deM 共回答了20个问题 | 采纳率90%
1.sizeof(int)*rank*rank
2.rank-1-i/rank+i%rank*rank
第二空 :首先对矩阵进行转置:x[i]=y[i%rank*rank+1/rank]
之后进行旋转:x[i]=y[rank-1-i%rank+i/rank*rank]
两者嵌套:x[i]=y[rank-1-(i%rank*rank+1/rank)%rank+(i%rank*rank+1/rank)/rank*rank]
可化简为rank-1-i/rank+i%rank*rank
1年前

相关推荐

算法训练 操作格子 用java写 ,蓝桥杯上的一题。请注意别超时!
算法训练 操作格子 用java写 ,蓝桥杯上的一题。请注意别超时!
问题描述
有n个格子,从左到右放成一排,编号为1-n。
共有m次操作,有3种操作类型:
1.修改一个格子的权值,
2.求连续一段格子权值和,
3.求连续一段格子的最大值。
对于每个2、3操作输出你所求出的结果。
输入格式
第一行2个整数n,m。
接下来一行n个整数表示n个格子的初始权值。
接下来m行,每行3个整数p,x,y,p表示操作类型,p=1时表示修改格子x的权值为y,p=2时表示求区间[x,y]内格子权值和,p=3时表示求区间[x,y]内格子最大的权值。
输出格式
有若干行,行数等于p=2或3的操作总数。
每行1个整数,对应了每个p=2或3操作的结果。
样例输入
4 3
1 2 3 4
2 1 3
1 4 3
3 1 4
样例输出
6
3
数据规模与约定
对于20%的数据n
桔梗-J1年前1
如果世上没有医生 共回答了19个问题 | 采纳率94.7%
dty@ubuntu:~$ cat Zhidao.java import java.util.*;
public class Zhidao
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
int n=s.nextInt();
int m=s.nextInt();
int a[]=new int[n];
for(int i=0;i{
a[i]=s.nextInt();
}
int p,x,y;
for(int i=0;i{
p=s.nextInt();
x=s.nextInt();
y=s.nextInt();
if(p==1)
{
a[x-1]=y;
}
if(p==2)
{
int sum=0;
for(int j=x-1;j System.out.println(sum);
}
if(p==3)
{
int max=a[x-1];
for(int j=x-1;jmax? a[j]:max;
System.out.println(max);
}

}
}
}

dty@ubuntu:~$ javac Zhidao.java

dty@ubuntu:~$ java Zhidao

4 3

1 2 3 4

2 1 3

6

1 4 3

3 1 4

3

2011年蓝桥杯高职,看下面的算式:□□ x □□ = □□ x □□□它表示:两个两位数相乘等于一个两位数乘以一个三位
2011年蓝桥杯高职,
看下面的算式:
□□ x □□ = □□ x □□□
它表示:两个两位数相乘等于一个两位数乘以一个三位数.
如果没有限定条件,这样的例子很多.
但目前的限定是:这9个方块,表示1~9的9个数字,不包含0.
该算式中1至9的每个数字出现且只出现一次!
比如:
46 x 79 = 23 x 158
54 x 69 = 27 x 138
54 x 93 = 27 x 186
.
请编程,输出所有可能的情况!
注意:
左边的两个乘数交换算同一方案,不要重复输出!
不同方案的输出顺序不重要
#include
int check(int a,int b,int c,int d,int e,int f,int g,int h,int i)
{
if((a!=b)&&(a!=c)&&(a!=d)&&(a!=e)&&(a!=f)&&(a!=g)&&(a!=h)&&(a!=i))
{
if((b!=c)&&(b!=d)&&(b!=e)&&(b!=f)&&(b!=g)&&(b!=h)&&(b!=i))
{
if((c!=d)&&(c!=e)&&(c!=f)&&(c!=g)&&(c!=h)&&(c!=i))
{
if((d!=e)&&(d!=f)&&(d!=g)&&(d!=h)&&(d!=i))
{
if((f!=e)&&(f!=g)&&(f!=h)&&(f!=i))
{
if((e!=g)&&(e!=h)&&(e!=i))
{
if((g!=h)&&(g!=i))
{
if(h!=i)
return 1;
}
}
}
}
}
}
}
return 0;
}
void main()
{
//int j=0;
int a,b,c,d,e,f,g,h,i;
//int A[9],B[9],C[9],D[9],E[9],F[9],G[9],H[9],I[9];
for(a=1;a
serviceqq1年前1
ヽ﹎領銜紸縯 共回答了19个问题 | 采纳率100%
原来是参加蓝桥的啊.我是本B组的. 【你的问题】1)你循环的时候条件a<=9,b<=9你全部没了=!2)没有判断是否重复,应该用数组记录一下已经存在的两个数交换的情况
你本可以不用这么麻烦的.用四个变量记录数据,一个数组记录出现次数就可以了.你自己的我在给你看,可能需要花一点时间.#include#include#includeint main(){int temp;int flag=0; bool shuzi[10]={0}; char a[4]; for(int i=10;i<99;i++) for(int j=0;j<99;j++) for(int k=0;j<99;j++) for(int t=100;t<999;t++) { flag=0; itoa(i,a,10); for(temp=0;temp<=strlen(a);temp++) shuzi[a[temp]-'0']=true; itoa(j,a,10); for(temp=0;temp<=strlen(a);temp++) shuzi[a[temp]-'0']=true; itoa(k,a,10); for(temp=0;temp<=strlen(a);temp++) shuzi[a[temp]-'0']=true; itoa(t,a,10); for(temp=0;temp<=strlen(a);temp++) shuzi[a[temp]-'0']=true; for(temp=1;temp<=9;temp++) if(!a[temp]) { flag=true; break; } if(!flag) printf("%d*%d=%d*%dn",i,j,k,t); flag=0; memset(shuzi,0,sizeof(bool)*10); } return 0;}
帮忙解答蓝桥杯的一道题?.10. 小朋友排队n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换
帮忙解答蓝桥杯的一道题?
.
10. 小朋友排队
n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。
每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是0。
如果某个小朋友第一次被要求交换,则他的不高兴程度增加1,如
2014 蓝桥杯 C/C++语言本科 B 组预赛试题
15
果第二次要求他交换,则他的不高兴程度增加2(即不高兴程度为3),依次类推。当要求某个小朋友第k次交换时,他的不高兴程度增加k。
请问,要让所有小朋友按从低到高排队,他们的不高兴程度之和最小是多少。
解法是求逆序对,但不知道为什么要这么求?
bobbobzhou1年前1
**king 共回答了11个问题 | 采纳率100%
#include
#define SIZE 100
struct data
{
unsigned long height;
unsigned long time;
unsigned long angry;
};
struct data children[SIZE];
struct data temp;
int main()
{
unsigned number=0,total_angry=0;
unsigned i,out,in;//for loop
scanf("%lu",&number);

for(i=0;i

大家在问