n个岛编程
A. 带"n"字并拥有1.7个岛屿是哪个国家
1.7个岛屿还是1.7万个岛屿啊?1.7万的话是印度尼西亚(Republik Indonesia)。
B. 编程题,求n个数中的r个组合,其中n,r由键盘输入
#include <stdio.h>
long funp(int x){
if (x<=1) return 1;
return (x-1)*funp(x-1);
}
long func(int n,int r){
return funp(n)/funp(r)/funp(n-r);
}
int main()
{
int n,r;
printf("请输入n和r的值\n");
scanf("%d%d",&n,&r);
printf("c(%d,%d)=%ld\n",n,r,func(n,r));
}
C. 编程高手进:输入n个数,求n个数的和,并输出这n个数
/***********c语言,开发环境是VS2010************
***************如果是VC6.0的环境***************
******请将程序里所有scanf_s替换成scanf*********
*****并且去掉最后一行system("pause");**********/
#include<stdio.h>
#include<stdlib.h>
voidmain()
{
inti,n,a[100],sum=0;
printf("你想输入几个数:");
scanf_s("%d",&n);
printf("请输入这%d个数:",n);
for(i=0;i<n;i++)
{
scanf_s("%d",&a[i]);
sum+=a[i];
}
printf("这%d个数的和为:%d ",n,sum);
for(i=0;i<n;i++)
{
printf("%d",a[i]);
}
printf(" ");
system("pause");
}
D. N个岛建N-1座桥总建法是N的N-2次方! 哪位帮我证明一下啊
对于一个无向连通图来说,它可能有很多生成树,那么如何求得它的生成树个数呢?
首先给出一个非常一般的计算方法 -- 矩阵行列式法
对于任何一个顶点数为n的无向连通图,我们列出一个矩阵.
矩阵的规则是:
1、在主对角线上的元素为此节点的度数
2、对于其他位置上的元素Matrix(i,j) { i != j },
(1) 如果节点i和节点j连通,则Matrix(i,j)的值为-k,其中k值为节点i到节点j的平行边个数.如果此图是一个简单图,即任意两点间不存在平行边,那么这个值就为-1.
(2) 但如果节点i和节点j根本不连通,则Matrix(i,j)的值为0.
接下来如何求得这个无向连通图的生成树个数呢.
直接给出定理:
撤去任意一个节点的信息,求出剩下的(n-1)*(n-1)矩阵的行列式,此值即为这个无向连通图的生成树个数.
我就先贴1段吧..
E. 标题:国王的烦恼 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大
根据天数从大到小排序,从大到小开始遍历,如果某个桥的两端不是连通的,他们就会抗议。因为天数更小的即使使这两端连通,因为天数较小,过了几天后,他们还是不连通。(要注意判断天数相同的情况)。
例如例题给的案例:
4 4
1 2 2
1 3 2
2 3 1
3 4 3
排序后变成
3,4,3
1,2,2
1,3,2
2,3,1
依次遍历从第一个开始
因为本身3,4并不连通,所以抗议sum++;
同理1,2也不连通,sum++;
到1,3的时候,1,3也是不连通的,也要抗议,但是因为提议说是抗议几天,1,2和1,3的桥都是第二天坏,所以他们是同一天抗议,sum不变最后到2,3, 这两点是连通的,所以sum保持不变,可知return a[x]=find(a[x])。
(5)n个岛编程扩展阅读:
代码为:
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#define MAX 100000using namespace std;
struct edge{
int a,b;
int w;
};
edge se[MAX];//储存边
int set[MAX];//辅助集合
int n, m, sum = 0;
bool cmp(edge e1, edge e2){
return e1.w > e2.w;
}
int find(int x){
return x == set[x]? x : set[x] = find(set[x]);
}
int main(){
scanf("%d %d", &n, &m);
for(int i = 0; i < m; i++){
int a, b, w;
scanf("%d %d %d", &se[i].a, &se[i].b, &se[i].w);
}
for(int i = 1; i <= n; i++){
set[i] = i;
}
sort(se,se+m,cmp);
int day = se[0].w;
for(int i = 0; i < m; day--){
int flag = 0;
while(day == se[i].w){
int a = find(set[se[i].a]);
int b = find(set[se[i].b]);
if(a != b){
flag = 1;
set[a] = b;
}
i++;
}
sum += flag;
}
cout<< sum << endl;
return 0;
}
F. 怎么取数据岛第n个元素的值 代码如下,我只能去到code列的第一个元素的值
$A(xmldoc.documentElement.getElementsByTagName('code')).each(function(e) {
var test=get_text_value(e.getElementsByTagName('子节点名')[0]);
});
G. C语言求小岛面积
#define N 20
void main() {
int n,i,j,k,b,a[N][N],s;
scanf("%d",&n); if ( n>N ) n=N;
for ( i=0;i<n;i++ ) for ( j=0;j<n;j++ ) scanf("%d",&a[i][j]);
for ( i=s=0;i<n;i++ )
for ( j=0;j<n;j++ ) {
b=0; for ( k=0;k<i;k++ ) if ( a[k][j] ) { b=1;break; } if ( !b ) continue;
b=0; for ( k=i+1;k<n;k++ ) if ( a[k][j] ) { b=1;break; } if ( !b ) continue;
b=0; for ( k=0;k<j;k++ ) if ( a[i][k] ) { b=1;break; } if ( !b ) continue;
b=0; for ( k=j+1;k<n;k++ ) if ( a[i][k] ) { b=1;break; } if ( !b ) continue;
s++;
}
printf("%d ",s);
}
H. C语言编程中如何输入N个整数
循环N次 每次输入一个就好。
可以随输入随处理,也可以存到数组里面。
样例
intN,t;
scanf("%d",&N);
while(N--)
{
scanf("%d",&t);
...
}
I. c语言编程:最大岛屿问题 A国是个岛国,由若干个小岛组成。A国地图如下所示:
#include<stdio.h>
charmap[100][100];
intn,m;
inttotal,maxArea,area;
voidGetMap()
{
scanf("%d%d ",&n,&m);
for(inti=0;i<n;++i)
{
for(intj=0;j<m;++j)
{
scanf("%c",&map[i][j]);
}
getchar();
}
}
voidSearch(intx,inty)
{
if(x<0||x>=n||y<0||y>=m||map[x][y]=='.')
{
return;
}
++area;
map[x][y]='.';
Search(x-1,y-1);
Search(x-1,y);
Search(x-1,y+1);
Search(x,y-1);
Search(x,y+1);
Search(x+1,y-1);
Search(x+1,y);
Search(x+1,y+1);
}
voidGetResult()
{
for(inti=0;i<n;++i)
{
for(intj=0;j<m;++j)
{
if(map[i][j]=='I')
{
++total;
area=0;
Search(i,j);
if(maxArea<area)
{
maxArea=area;
}
}
}
}
}
intmain()
{
GetMap();
GetResult();
printf("%d%d ",total,maxArea);
return0;
}
J. 编程编程,定义一个n个整数的数组,然后输入一个正整数m(m<n)作为要输入的数
写一个排序的方法 插入数据以后执行一次排序方法就OK了