当前位置:   article > 正文

九度oj 专题整理(模拟部分3)_9iiijjjjoj…8

9iiijjjjoj…8

三角形的输入输出问题,我想到了二维数组,在POJ上练习题目的过程中,发现北大对二维数组的考察也是蛮多的,感觉也很有趣,于是学习了几个题目,因为写不出代码,也只能说学习了,简单做一下整理,如果以后有机会,会完善这部分= =

20:反反复复

第一次遇上没做出来,心情很不好的说= = 点击打开链接,以下是网上代码,因为是从我的AC代码中粘过来的,所以就不附原来的博客链接了 = =见谅
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. const int M = 20;
  5. const int N = 100;
  6. char A[N][M], B[N][M];
  7. int main()
  8. {
  9. string s;
  10. int m, n, t=0, r=-1;
  11. cin >> m;
  12. cin >> s;
  13. while (t < s.length())//一次读入字符到二维数组
  14. {
  15. r++;
  16. for (int j=0; j<m; j++)
  17. A[r][j] = s[t++];
  18. if (t < s.length())
  19. {
  20. r++;
  21. for (int j=m-1; j>=0; j--)
  22. A[r][j] = s[t++];
  23. }
  24. }
  25. n = s.length() / m; //行数
  26. for (int j=0; j<m; j++)//从上到下逐行输出字符
  27. {
  28. for (int i=0; i<n; i++)
  29. {
  30. cout << A[i][j];
  31. }
  32. }
  33. cout << endl;
  34. return 0;
  35. }

以下是我的代码,WA了,也许是字符数组太多,搞的哪里有点乱,可是想了很久也不知道哪里错了,如果有大神看了,请指出,不胜感激
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <algorithm>
  4. #include <iostream>
  5. #include <string.h>
  6. #include <queue>
  7. #include <vector>
  8. using namespace std;
  9. int main()
  10. {
  11. char str[2200];
  12. char ma[40][42];
  13. char map[42][42];
  14. int n;
  15. scanf("%d",&n);
  16. //getchar();
  17. cin>>str;
  18. //scanf("%s",str);
  19. int len=strlen(str);
  20. memset(map,'\0',sizeof(map));
  21. int k=0;
  22. int m=len/n;
  23. for(int i=0; i<m; i++)
  24. {
  25. for(int j=0; j<n; j++)
  26. {
  27. ma[i][j]=str[k++];
  28. }
  29. }
  30. for(int i=0; i<m; i++)
  31. {
  32. int p=0;
  33. if(i%2==1)
  34. {
  35. for(int j=n-1; j>=0; j--)
  36. {
  37. map[i][p++]=ma[i][j];
  38. }
  39. }
  40. else
  41. {
  42. for(int j=n-1; j>=0; j--)
  43. {
  44. map[i][j]=ma[i][j];
  45. }
  46. }
  47. }
  48. for(int j=0; j<n; j++)
  49. {
  50. for(int i=0; i<m; i++)
  51. {
  52. printf("%c",map[i][j]);
  53. }
  54. // printf("\n");
  55. }
  56. printf("\n");
  57. return 0;
  58. }

神奇的幻方 点击打开链接
这个题目描述的很清楚,但是自己写的时候真是状况百出,四个方向i,j的加减不对应,改了好久= =
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #define exp 1e-6
  6. #define pi acos(-1.0)
  7. using namespace std;
  8. int main()
  9. {
  10. int n;
  11. int ma[40][40];
  12. while(~scanf("%d",&n))
  13. {
  14. memset(ma,0,sizeof(ma));
  15. int m=2*n-1;
  16. int sum=1;
  17. int cnt=m*m;
  18. int i=1,j=n;
  19. while(sum<=cnt)
  20. {
  21. ma[i][j]=sum++;
  22. //printf("%d %d %d\n",i,j,ma[i][j]);
  23. if(i==1&&j<m)
  24. {
  25. i=m;
  26. j++;
  27. }
  28. else if(j==m&&i>1)
  29. {
  30. i--;
  31. j=1;
  32. }
  33. else if(i==1&&j==m||ma[i-1][j+1]!=0)
  34. {
  35. i++;
  36. }
  37. else
  38. {
  39. i--;
  40. j++;
  41. }
  42. //ma[i][j]=sum++;
  43. //printf()
  44. }
  45. for(int x=1;x<=m; x++)
  46. {
  47. for(int y=1; y<m; y++)
  48. {
  49. printf("%d ",ma[x][y]);
  50. }
  51. printf("%d\n",ma[x][m]);
  52. }
  53. }
  54. return 0;
  55. }


23:二维数组回形遍历


题目 点击打开链接这个题目感谢一篇优秀的博客 点击打开链接,不过我只是稍加改动,就样例正确,但是TLE了,代码就不贴了

24:蛇形填充数组


题目 点击打开链接也是借鉴的其他博客,感觉写的很好,我写着写着就感觉乱,大概是对while循环掌握的还不好吧
  1. #include<iostream>
  2. #include<algorithm>
  3. #include<stdio.h>
  4. #include<string.h>
  5. #include<math.h>
  6. #include<queue>
  7. #include<set>
  8. #include<map>
  9. #define LL long long
  10. #define PI acos(-1)
  11. #define exp 1e-9
  12. #define INF 0x7ffffff;
  13. using namespace std;
  14. int a[10][10];
  15. int n;
  16. int prin(int e)//c
  17. {
  18. for(int i=1; i<=e; i++) {
  19. for(int j=1; j<=e; j++)
  20. cout<<a[i][j]<<' ';
  21. cout<<endl;
  22. }
  23. return 0;
  24. }
  25. int main()
  26. {
  27. cin>>n;
  28. int x=1,i=1,j=1,m=1;
  29. while(m<=n) {
  30. a[i][j]=x;
  31. if(j<n) j++;
  32. else if(j==n) i++;
  33. x++;
  34. while(i<n&&j>1) {
  35. a[i][j]=x;
  36. i++;
  37. j--;
  38. x++;
  39. }
  40. a[i][j]=x;
  41. if(i<n) i++;
  42. else if(i==n) j++;
  43. x++;
  44. while(i>1&&j<n) {
  45. a[i][j]=x;
  46. i--;
  47. j++;
  48. x++;
  49. }
  50. m++;
  51. }
  52. prin(n);
  53. return 0;
  54. }

类似的题目还有,比如当m!=n的时候,这个时候就比较麻烦了,不过能看明白的,有套路的不都是水题吗,,暂不叙述,,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/928866
推荐阅读
相关标签
  

闽ICP备14008679号