# re: 第三屆全國高校程序設計大賽賽題問題5:導線交叉 回復 更多評論
2006-01-14 20:49 by
這個并不復雜,其實很簡單的。就是判斷一下上一排端子右側的端子相連的下一排的端子是否小于他相連的端子,小于就相交。
# re: 第三屆全國高校程序設計大賽賽題問題5:導線交叉 回復 更多評論
2006-01-15 10:37 by
To hnhls99 :
上面結論不難得出,還要考慮的一個問題就是是交叉點重復得個數。也就是說最后得出的交叉點總數必須減掉重復的點。
# re: 第三屆全國高校程序設計大賽賽題問題5:導線交叉 回復 更多評論
2006-01-15 10:58 by
看題好像沒有計算重復點吧,如果計算的話上面的圖中的交點數可能就不夠22個了.
如果要計算的話,我想可以用方程來表示線,計算出每個交點的坐標來.
# re: 第三屆全國高校程序設計大賽賽題問題5:導線交叉 回復 更多評論
2006-01-15 21:22 by
To 學習筆記:
有沒有比較簡單的方法去計算重復的點呢?
# re: 第三屆全國高校程序設計大賽賽題問題5:導線交叉 回復 更多評論
2006-01-16 10:12 by
用方程計算比較麻煩,要自己定義坐標系,計算方程的解??梢员WC的一點是肯定可以實現??赡苓@種方法就是最簡單的了。
# re: 第三屆全國高校程序設計大賽賽題問題5:導線交叉 回復 更多評論
2006-03-26 11:50 by
可以根據相似三角形的性質很簡單了推出,交點的高和水平位置,再根據這個來判斷交點是否重合,這樣應該比解方程簡單點。
# re: 第三屆全國高校程序設計大賽賽題問題5:導線交叉 回復 更多評論
2007-05-18 12:59 by
#include<stdio.h>
#include<malloc.h>
void main()
{
int n,m,i,j,k,count=0;
int *a;
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d",&n);
a=(int *)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(j=0;j<n;j++)
{
for(k=j+1;k<n;k++)
{
if(a[j]<a[k]) count++;
}
}
printf("%d\n%d\n",i,count);
}
}