Problem D: C语言习题 矩阵元素变换
来源:互联网 发布:女性健身 知乎 编辑:程序博客网 时间:2024/05/29 15:22
Problem D: C语言习题 矩阵元素变换
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1093 Solved: 643
[Submit][Status][Web Board]
Description
函数实现。用main函数调用。
Input
输入n和矩阵中的每个元素
Output
变换后的矩阵
Sample Input
525 13 9 5 116 17 18 19 615 24 4 20 714 23 22 21 82 12 11 10 3
Sample Output
1 13 9 5 2 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 3 12 11 10 4
HINT
主函数已给定如下,提交时不需要包含下述主函数
/* C代码 */
int main()
{
void change(int *,int );
int **a,*p,i,j;
int n;
scanf("%d",&n);
p=(int*)malloc(n*n*sizeof(int));
a=(int**)malloc(n*sizeof(int *));
for(i=0; i<n; i++)
a[i]=p+n*i;
for (i=0; i<n; i++) //输入矩阵
for (j=0; j<n; j++)
scanf("%d",&a[i][j]);
change(p,n); //调用函数,实现交换
for (i=0; i<n; i++) //输出已交换的矩阵
{
for (j=0; j<n; j++)
printf("%d ",a[i][j]);
printf("\n");
}
free(p);
free(a);
return 0;
}
/* C++代码 */
int main()
{
void change(int *,int );
int **a,*p,i,j;
int n;
cin>>n;
p=new int[n*n];
a=new int*[n];
for(i=0; i<n; i++)
a[i]=p+n*i;
for (i=0; i<n; i++) //输入矩阵
for (j=0; j<n; j++)
cin>>a[i][j];
change(p,n); //调用函数,实现交换
for (i=0; i<n; i++) //输出已交换的矩阵
{
for (j=0; j<n; j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
delete []p;
delete []a;
return 0;
}
代码实现:
#include<stdio.h>#include<stdlib.h>void change(int *k,int p){ int t,*min,*max,i,j; min=max=k; for(i=0; i<p; i++) for(j=0; j<p; j++) { if(*(k+p*i+j)<*min) min=k+p*i+j; else if(*(k+p*i+j)>*max) max=k+p*i+j; } t=*max; *max=*(k+(p*p)/2); *(k+(p*p)/2)=t; t=*min; *min=*k; *k=t; min=&*(k+1); for(i=0; i<p; i++) for(j=0; j<p; j++) if((k+p*i+j)!=k) if(*(k+p*i+j)<*min) min=k+p*i+j; t=*min; *min=*(k+p-1); *(k+p-1)=t; min=&*(k+1); for(i=0; i<p; i++) for(j=0; j<p; j++) if((k+p*i+j)!=(k+p-1)&&(k+p*i+j)!=k) if(*(k+p*i+j)<*min) min=k+p*i+j; t=*min; *min=*(k+p*(p-1)); *(k+p*(p-1))=t; min=&*(k+1); for(i=0; i<p; i++) for(j=0; j<p; j++) if((k+p*i+j)!=k&&(k+p*i+j)!=(k+p-1)&&(k+p*i+j)!=(k+p*(p-1))) if(*(k+p*i+j)<*min) min=k+p*i+j; t=*min; *min=*(k+p*p-1); *(k+p*p-1)=t;} int main(){ void change(int *,int ); int **a,*p,i,j; int n; scanf("%d",&n); p=(int*)malloc(n*n*sizeof(int)); a=(int**)malloc(n*sizeof(int *)); for(i=0; i<n; i++) a[i]=p+n*i; for (i=0; i<n; i++) for (j=0; j<n; j++) scanf("%d",&a[i][j]); change(p,n); for (i=0; i<n; i++) { for (j=0; j<n; j++) printf("%d ",a[i][j]); printf("\n"); } free(p); free(a); return 0;}
- Problem D、F: C语言习题 矩阵元素变换
- Problem D: C语言习题 矩阵元素变换
- Problem D: C语言习题 矩阵元素变换
- Problem D: C语言习题 矩阵元素变换
- Problem F: C语言习题 矩阵元素变换
- Problem B: C语言习题 矩阵元素变换
- YTU:C语言习题 矩阵元素变换
- C语言习题 矩阵元素变换
- YTU 2418: C语言习题 矩阵元素变换
- Problem D: C语言习题 字符串比较
- Problem D: C语言习题 字符串比较
- Problem D: C语言习题 a!+b!+c!
- OJytu:Problem D: C语言习题5.12--查闰年
- Problem D: C语言习题 不等长字符串排序
- Problem D: C语言习题5.25--文件操作2
- Problem D: C语言习题5.25--文件操作2
- oj Problem D: C语言习题 输出月份
- 第15周 oj Problem D: C语言习题 字符串长度
- Leetcode题解 263. Ugly Number
- 通知的相关知识点
- 通过adb导出未root的小米手机上的apk文件
- 对于C++中traits的简单介绍
- Java sun.misc.Unsafe
- Problem D: C语言习题 矩阵元素变换
- 正则表达式 - 语法
- WKWebView与h5的交互
- ORA-38104: 无法更新 ON 子句中引用的列: "A"."MAINID"
- iOS给分类添加属性时使用 @selector()原理详解
- 算法之二叉树各种遍历
- idea new project from github
- Android Studio或Eclipse的DDMS看不到data文件解决办法
- qt对话框