問題 b: 分組統計時間限制: 1 sec 記憶體限制: 32 mb
提交: 416 解決: 107
[提交][狀態][討論版][命題人:外部匯入]
先輸入一組數,然後輸入其分組,按照分組統計出現次數並輸出,參見樣例。
輸入第一行表示樣例數m,對於每個樣例,第一行為數的個數n,接下來兩行分別有n個數,第一行有n個數,第二行的n個數分別對應上一行每個數的分組,n不超過100。
輸出m行,格式參見樣例,按從小到大排。
1
73 2 3 8 8 2 3
1 2 3 2 1 3 1
1=
2=3=
這個是典型的雜湊演算法了。
這個樣例是統計每組數字裡面各數字(出現在第一行的數字,這一次是3,2,8)的個數。
所以每一組數字要個陣列3,記錄2,3,8的個數
先搞乙個在n個數字第一次出現時的陣列num,記錄那些數字出現了,出現了幾次,以該數字為下標的陣列值++,那這個陣列大小應該是很大的啊 。
再來就是分組了,再來乙個陣列zu,以上一行出現過數字為下標,值為所分的組。
組數肯定要小於n
這問題幾個月之前就遇到過了。
#include #include #include //#include #define maxn 10005
int cmp(const void*a, const void*b)
int main();
//int temp[n+1] = int_max;
int temp[n+1] = ;
for(int i = 1; i <= n; i++)
int zu[n+1] = , num = 0, kzu[n+1] = ;
for(int i = 1; i <= n; i++)
/*二維陣列裡行代表這個數,列代表該行對應數在某組裡出現的次數*/
for(int i = 1; i <= n; i++)
//num記錄分的組的個數
/*該對第一行的n個數按大小排序了*/
qsort(temp+1, n, sizeof(temp[0]), cmp);
/*for(int i = 1; i <= n; i++)//排序正確*/
/*剔除重複項,建立新陣列*/
int newtemp[n+1], newxu = 2;
newtemp[1] = temp[1];
for(int i = 2; i <= n; i++)
/*for(int i = 1; i < newxu; i++)//剔除重複項,新陣列正確*/
for(int j = 1; j <= num; j++)
printf("}\n");
} }
} return 0;
}
s066 problem b 分組統計 - csdn部落格
#include #include #include using namespace std;
const int maxn = 102;
int main()
, classflag[maxn] = , class[maxn], clan = 0, num[maxn], tmp, numui[maxn], n = 0;
cin >> n;
for (int i = 0; i < n; ++i)
cin >> num[i];//讀入第一行所有數
for (int i = 0; i < n; ++i)
table[tmp][table[tmp][maxn - 1]++] = num[i];//建立這個表,第幾組就是第幾行 ,避免了陣列越界
}//該數是第幾組存進第幾行的,存進哪一列呢?從第1列,開始存,該行最後一列記錄了該組的數字個數
sort(class, class + clan);//組序號排序 ,clan記錄組的個數
sort(num, num + n);//第一行數字排序
/*剔除重複項,建立新陣列*/
for (int i = 0; i < n; ++i)
}for (int k = 0; k < clan; ++k)
printf("%d=%d", numui[h], c);
if (h < n-1)
printf(",");
}printf("}\n");}}
}#ifdef _debug
cin.close();
system("pause");
#endif // _debug
return 0;
}
c/c++[codeup 2066]分組統計 - csdn部落格c++ stl演算法系列4---unique , unique_copy函式 - 夏雪冬日 -
#include #include //max_element,unique_copy
#include #include using namespace std;
int main()
cout << '}' << endl;}}
}return 0;
}
這裡比較重要的是,取得容器內最大值,防止二維陣列越界問題。
c++ stl之min_element()與max_element()(取容器中的最大最小值) - angel_kitty -
#include#includeusing namespace std;
bool cmp(int a,int b)
int main()
; cout<<"最小值是 "<<*min_element(num,num+6)cout<<"最大值是 "<<*max_element(num,num+6,cmp)也就是說,要置零,使用memset最好了。
memset(cur,0,sizeof(cur))
#include #include //max_element,unique_copy
#include #include using namespace std;
int main()
cout << '}' << endl;}}
}return 0;
}
c 問題 B 分組統計(用set解決)
先輸入一組數,然後輸入其分組,按照分組統計出現次數並輸出,參見樣例。輸入第一行表示樣例數m,對於每個樣例,第一行為數的個數n,接下來兩行分別有n個數,第一行有n個數,第二行的n個數分別對應上一行每個數的分組,n不超過100。輸出m行,格式參見樣例,按從小到大排。173 2388 2312 3213 ...
Mysql 解決 分組統計問題
我有四張表a b c d,a b c d a b a c a d d e 1 1 1 1 1 a a 1 2 2 1 3 2 b b 2 3 4 1 4 3 c c 3 4 6 2 1 4 d d 4 現在要用一條sql語句將a表所有的列,b表對與a表a欄位 相關聯的列求count,通過c表,將d表...
XYNUOJ 問題 B 彩燈統計
時間限制 1 sec 記憶體限制 128 mb 提交 34 解決 12 提交 狀態 討論版 兒童樂園有各種顏色的彩燈,小明想要知道哪種顏色的燈數量最多。但是由於資料過於龐大,小明也束手無策,所以他想請聰明如你的acmer來幫忙。第一行輸入彩燈的數量n 1 n 1000 接下來的n行輸入n個字串表示彩...