fork download
  1. #include<iostream>
  2. #include<string.h>
  3. using namespace std;
  4.  
  5. bool isMatching(char *str, char *reg, int n, int m, int i, int j) {
  6. if(i==n&&j==m) return true;
  7. if(i>=n||j>=m) return false;
  8. if(reg[j]<'a'||reg>'z') return false;
  9. if(j+1>=m&&reg[j]==str[i]) return true;
  10. if(j+1>=m) return false;
  11. if(reg[j+1]=='?') {
  12. //0 case
  13. if(isMatching(str, reg, n, m, i, j+2)) return true;
  14. //1 case
  15. if(reg[j]==str[i]) return isMatching(str, reg, n, m, i+1, j+2);
  16. return false;
  17. }
  18. if(reg[j+1]=='*') {
  19. //0 case
  20. if(isMatching(str, reg, n, m, i, j+2)) return true;
  21. while(i<n&&str[i]==reg[j]) {
  22. if(isMatching(str, reg, n, m, i++, j+2)) return true;
  23. }
  24. return false;
  25. }
  26. if(reg[j]==str[i]) return isMatching(str, reg, n, m, i+1, j+1);
  27. return false;
  28. }
  29.  
  30. int main() {
  31. char reg[10], str[256];
  32. scanf("%s%s",str, reg);
  33. cout<<isMatching(str, reg, strlen(str), strlen(reg), 0, 0)<<endl;
  34. return 0;
  35. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
kapil
kapil
compilation info
prog.cpp: In function ‘bool isMatching(char*, char*, int, int, int, int)’:
prog.cpp:8: error: ISO C++ forbids comparison between pointer and integer
prog.cpp: In function ‘int main()’:
prog.cpp:32: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
stdout
Standard output is empty