3 条题解
-
0
本质就是全排列加一个升序 在全排列的dfs的for中加上升序的判断就可以了
#include <bits/stdc++.h> using namespace std; const int N = 35; int ans[N]; bool vis[N]; int n,r; void dfs(int k) { if(k>r) { for(int i = 1;i<=r;i++) cout << ans[i] << " "; cout << endl; return ; } for(int i = ans[k-1]+1;i<=n;i++) { if(vis[i]) { ans[k] = i; vis[i] = false; dfs(k+1); vis[i] = true; } } } int main() { cin >> n >> r; memset(vis,true,sizeof(vis)); dfs(1); return 0; }
-
0
C++ :
#include <iostream> #include <cstdio> #include <cstring> #include <sstream> #include <algorithm> #define Maxn 1009 using namespace std; int main() { int a,b; scanf("%d %d",&a,&b); if(a>b){swap(a,b);} for(int i=1;i<=a;i++){ for(int j=1;j<=b;j++){ if(i!=j && i<j){printf("%d %d\n",i,j);} } } return 0; }
- 1
信息
- ID
- 89
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 120
- 已通过
- 67
- 上传者