You could just set up as one product and use an attribute drop-down for adult numbers, and another drop-down for children numbers.
Zencart allows you to PRICE BY ATTRIBUTE, so as the user selects the required number of people from each dropdown, the cost will increment accordingly.
In such a scenario, you disable the quantity box (to not display) as you will not need it... The quantities are displayed in the dropdowns.
If you use the DYNAMIC PRICE UPDATER module, the total price will dynamically "refresh" onscreen, so the total will display before the "ticket(s)" are added to the cart.
We did a "theatre" booking site for a local school's annual play, using this technique, and it worked just fine.
HOWEVER !!!
Your challenge will be "stock control" and date/time referencing... The site must know (somehow) when a particular boat ride is FULL, and secondly, the DATE and TIME of any particular excursion.
I mean... you don't want 12,354,997 bookings for your boat trip on Monday 23 January for the 10H00 trip, if the boat can only accommodate 50 people per trip...
Zencart is a bit clunky in this respect... as they only way to do it (easily), is to set up EACH TRIP as a separate product, and to control quantity using stock by attributes module.
There are other systems that handle this type of online purchasing - Joomla and the JOMBOK module are better-designed for this purpose.
You may also care to look at WordPress and embed something like the booking calendar feature offered by SuperSaas . We did a site using this (WordPress plus SuperSaaS) for a physiotherapist who sells appointments and consultations.