1 条题解
-
0
C :
#include<stdio.h> int n,begin[1000],end[1000],a[1000],k; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d %d",&begin[i],&end[i]); for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) if(end[i]>end[j]) { int t1=begin[i],t2=end[i]; begin[i]=begin[j]; begin[j]=t1; end[i]=end[j]; end[j]=t2; } int endx=0; for(int i=1;i<=n;i++) if(begin[i]>=endx) { endx=end[i]; k++; } printf("%d",k); return 0; }
C++ :
#include<iostream> using namespace std; int n,b[1001],e[1001]; void solve() { int ans=0; int t = -1; for(int i=1;i<=n;++i) //如果当前活动与之前最后结束的活动不冲突,就接受当前活动。 if(b[i]>=t) { ++ans; t=e[i]; } cout<<ans<<endl; } int main() { int i,j,t; cin>>n; for(i=1;i<=n;i++) cin>>b[i]>>e[i]; //按照结束时间对2个数组同时排序 for(i = 1;i < n;i++){ for(j = 1;j <= n - i;j++){ if(e[j] > e[j+1]){ swap(e[j],e[j+1]); swap(b[j],b[j+1]); } } } solve(); return 0; }
Python :
n=int(input()) a=[[0 for i in range(2)] for j in range(n)] for i in range(n): sr=input().split() a[i][0]=int(sr[0]) a[i][1]=int(sr[1]) for i in range(n-1): for j in range(n-i-1): if(a[j][1]>a[j+1][1]): t=a[j][0] a[j][0]=a[j+1][0] a[j+1][0]=t t=a[j][1] a[j][1]=a[j+1][1] a[j+1][1]=t c=[] c.append(a[0][1]) k=0 for i in range(1,n): if(a[i][0]>=c[k]): k=k+1 c.append(a[i][1]) print(k+1)
- 1
信息
- ID
- 2292
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者