7-6 求矩阵的局部极大值
分数 10
全屏浏览题目
切换布局
作者 徐镜春
单位 浙江大学
给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。
输入格式:
输入在第一行中给出矩阵A的行数M和列数N(3≤M,N≤20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。
输出格式:
每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。
输入样例1:
1. 4 5 2. 1 1 1 1 1 3. 1 3 9 3 1 4. 1 5 3 5 1 5. 1 1 1 1 1
输出样例1:
1. 9 2 3 2. 5 3 2 3. 5 3 4
输入样例2:
1. 3 5 2. 1 1 1 1 1 3. 9 3 9 9 1 4. 1 5 3 5 1
输出样例2:
None 3 5
1. #include<bits/stdc++.h> 2. using namespace std; 3. int main() 4. { 5. int flag=0; 6. int m,n; 7. int i,j; 8. cin>>m>>n; 9. int a[21][21]; 10. for(int i=1;i<=m;i++) 11. { 12. for(int j=1;j<=n;j++) 13. { 14. cin>>a[i][j]; 15. } 16. } 17. for(int i=2;i<m;i++) 18. { 19. for(int j=2;j<n;j++) 20. { 21. if(a[i][j]>a[i-1][j]&&a[i][j]>a[i+1][j]&&a[i][j]>a[i][j-1]&&a[i][j]>a[i][j+1]) 22. { 23. cout<<a[i][j]<<" "<<i<<" "<<j<<endl; 24. flag=1; 25. } 26. } 27. } 28. if(flag==0) 29. { 30. cout<<"None "<<m<<" "<<n<<endl; 31. } 32. return 0; 33. }
7-7 求矩阵各行元素之和
分数 10
全屏浏览题目
切换布局
作者 C课程组
单位 浙江大学
本题要求编写程序,求一个给定的m×n矩阵各行元素之和。
输入格式:
输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间
以空格分隔。
输出格式:
每行输出对应矩阵行元素之和。
输入样例:
1. 3 2 2. 6 3 3. 1 -8 4. 3 12
输出样例:
1. 9 2. -7 3. 15
1. #include<bits/stdc++.h> 2. using namespace std; 3. int main() 4. { 5. int m,n; 6. cin>>m>>n; 7. int a[20][20]; 8. for(int i=1;i<=m;i++) 9. { 10. for(int j=1;j<=n;j++) 11. { 12. cin>>a[i][j]; 13. } 14. } 15. 16. for(int i=1;i<=m;i++) 17. { 18. int sum=0; 19. for(int j=1;j<=n;j++) 20. { 21. sum=sum+a[i][j]; 22. } 23. cout<<sum<<endl; 24. } 25. return 0; 26. }
7-8 计算天数
分数 10
全屏浏览题目
切换布局
作者 沈睿
单位 浙江大学
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
输入样例1:
2009/03/02
输出样例1:
61
输入样例2:
2000/03/02
输出样例2:
62
1. #include<bits/stdc++.h> 2. using namespace std; 3. int main() 4. { 5. int sum=0; 6. int m[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 7. int year,month,day; 8. cin>>year; 9. getchar(); 10. cin>>month; 11. getchar(); 12. cin>>day; 13. if((year%4==0&&year%100!=0)||year%400==0) 14. { 15. for(int i=1;i<month;i++) 16. { 17. sum=sum+m[i]; 18. } 19. if(month>2) 20. { 21. sum=sum+day+1; 22. } 23. else 24. { 25. sum=sum+day; 26. } 27. } 28. else 29. { 30. for(int i=1;i<month;i++) 31. { 32. sum=sum+m[i]; 33. } 34. sum=sum+day; 35. } 36. cout<<sum<<endl; 37. return 0; 38. }
7-9 求一批整数中出现最多的个位数字
分数 10
全屏浏览题目
切换布局
作者 徐镜春
单位 浙江大学
给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。
输入格式:
输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。
输出格式:
在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。
输入样例:
1. 3 2. 1234 2345 3456
输出样例:
3: 3 4
1. #include<bits/stdc++.h> 2. using namespace std; 3. int main() 4. { 5. int num[10]={0}, n, max = 0, i; 6. char number; 7. cin>>n; 8. cin.get(); 9. while ((number = getchar()) != '\n') 10. { 11. if (number == ' ') 12. continue; 13. num[number-'0']++; 14. } 15. for (i = 0; i < 10; i++) 16. { 17. if (num[i] > max) 18. { 19. max = num[i]; 20. } 21. } 22. cout<<max<<":"; 23. for (i = 0; i < 10; i++) 24. { 25. if (max == num[i]) 26. cout<<setw(2)<<i; 27. } 28. return 0; 29. }
7-10 找出不是两个数组共有的元素
分数 10
全屏浏览题目
切换布局
作者 张彤彧
单位 浙江大学
给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。
输出格式:
在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。
输入样例:
1. 10 3 -5 2 8 0 3 5 -15 9 100 2. 11 6 4 8 2 6 -5 9 0 100 8 1
输出样例:
3 5 -15 6 4 1
1. #include<bits/stdc++.h> 2. using namespace std; 3. int main() 4. { 5. int n1,n2,i,j,k=0; 6. int arr1[20],arr2[20],arr3[20]; 7. cin>>n1; 8. for(i=0;i<n1;i++) 9. { 10. cin>>arr1[i]; 11. } 12. cin>>n2; 13. for(i=0;i<n2;i++) 14. { 15. cin>>arr2[i]; 16. } 17. for(i=0;i<n1;i++) 18. { 19. for(j=0;j<n2;j++) 20. { 21. if(arr1[i]==arr2[j]) 22. { 23. break; 24. } 25. } 26. if(j>=n2) 27. { 28. arr3[k]=arr1[i]; 29. k++; 30. } 31. } 32. for(i=0;i<n2;i++) 33. { 34. for(j=0;j<n1;j++) 35. { 36. if(arr2[i]==arr1[j]) 37. { 38. break; 39. } 40. } 41. if(j>=n1) 42. { 43. arr3[k]=arr2[i]; 44. k++; 45. } 46. } 47. cout<<arr3[0]; 48. for(i=1;i<k;i++) 49. { 50. for(j=0;j<i;j++) 51. { 52. if(arr3[i]==arr3[j]) 53. { 54. break; 55. } 56. } 57. if(j>=i) 58. { 59. cout<<" "<<arr3[i]; 60. } 61. } 62. return 0; 63. }
1. #include<iostream> 2. using namespace std; 3. 4. 5. int main() 6. { 7. int a[21],b[21],c[21],d[42]; 8. int n,m; 9. cin>>n; 10. for(int i=0; i<=n-1; i++) cin>>a[i]; 11. cin>>m; 12. for(int i=0; i<=m-1; i++) cin>>b[i]; 13. for(int i=0; i<=m-1; i++) c[i]=0; 14. 15. int index=0; 16. 17. for(int i=0; i<=n-1; i++) 18. { 19. int flag = 0; 20. for(int j=0; j<=m-1; j++) 21. { 22. if (a[i] == b[j]) 23. { 24. c[j] = 1; 25. flag = 1; 26. } 27. } 28. 29. if(flag == 0) 30. { 31. if (index ==0) 32. d[index++] = a[i]; 33. else 34. { 35. int rep = 0; 36. for (int k=0; k<=index-1; k++) 37. { 38. if (a[i] == d[k]) {rep = 1; break;} 39. } 40. if (rep==0) d[index++]=a[i]; 41. } 42. } 43. } 44. 45. 46. for(int j=0;j<=m-1;j++) 47. { 48. if (c[j]==1) continue; 49. 50. int flag = 0; 51. for (int i = 0; i<=n-1; i++) 52. if (b[j] == a[i]) {flag = 1; break;} 53. 54. if(flag == 0) 55. { 56. if (index ==0) 57. d[index++] = b[j]; 58. else 59. { 60. int rep = 0; 61. for (int k=0; k<=index-1; k++) 62. { 63. if (b[j] == d[k]) {rep = 1; break;} 64. } 65. if (rep==0) d[index++]=b[j]; 66. } 67. } 68. } 69. 70. for(int i=0; i<=index-1; i++) 71. { 72. if (i>0) cout<<' '; 73. cout<<d[i]; 74. } 75. 76. 77. return 0; 78. }