今天做PAT题目时候看人家解答:
1 #include <cstdio> 2 #include <set> 3 using namespace std; 4 int main() { 5 int y, n; 6 scanf("%d%d", &y, &n); 7 for (int i = y; i <= 3012; i++) { 8 set<int> s; //每次循环,s都是在同一个地址 9 // printf("%p ", &s); 10 int num = i; 11 // printf("%p ", &num); 12 for (int j = 0; j < 4; j++) { 13 s.insert(num % 10); 14 num /= 10; 15 } 16 if (s.size() == n) { 17 printf("%d %04d", i - y, i); 18 break; 19 } 20 } 21 return 0; 22 }
突然想到第8行和第10行兴义的变量是否每次都不一样,惨后输出它们的地址试试发现都是一样的,也就是说,逻辑上其实在每一次的循环中它们都应该是不一样的,因为是“新定义”的嘛。然而,如果真的就不一样了,倘若循环次数很大的话,那岂不是内存告急~想想真是自己太傻