fork(1) download
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4.  
  5. int n;
  6. int arr[102][102];
  7. void read ()
  8. {
  9. cin>>n;
  10. for (int i=1; i<=n; i++)
  11. for (int j=1; j<=n; j++)
  12. cin>>arr[i][j];
  13. }
  14.  
  15. string F[102][102];
  16. string He2 ()
  17. {
  18. for (int i=1; i<=n; i++)
  19. {
  20. F[0][i]="";
  21. F[i][0]="";
  22. }
  23.  
  24. for (int i=1; i<=n; i++)
  25. {
  26. for (int j=1; j<=n; j++)
  27. {
  28. char tmp = (arr[i][j]+'0');
  29. F[i][j] = max(F[i-1][j], F[i][j-1])+tmp;
  30. }
  31. }
  32. return F[n][n];
  33. }
  34.  
  35. string BinToHex (string x)
  36. {
  37. string rs = "";
  38. while (x.size()%4!=0)
  39. x="0"+x;
  40.  
  41. for (int i=0; i<x.size(); i=i+4)
  42. {
  43. string tmp = x.substr(i, 4);
  44. int d = 0;
  45. for (int j=0; j<4; j++)
  46. {
  47. d+=((tmp[j]-'0')*pow(2,(3-j)));
  48. }
  49. char c;
  50. if (d>=0 && d<=9)
  51. c = d+'0';
  52. else
  53. c = d-10+'A';
  54. rs = rs+c;
  55. }
  56. if (rs=="") return "0";
  57. else
  58. {
  59. while (1)
  60. {
  61. if (rs.size()-1==0 || rs[0]!='0') break;
  62. rs.erase(rs.begin(), rs.begin()+1);
  63. }
  64. }
  65. return rs;
  66. }
  67.  
  68. int main ()
  69. {
  70. read ();
  71. string He2Max = He2();
  72. // cout<<He2Max<<endl;
  73. cout<<BinToHex(He2Max);
  74. return 0;
  75. }
Success #stdin #stdout 0s 4504KB
stdin
5
1 0 1 1 0
0 0 1 0 1
0 0 1 0 1
1 0 0 1 1
1 1 0 1 0
stdout
176